У меня есть выделенный сервер в нуксит, что «гарантирует» соединение 20 МБ. Я запускаю там игровой сервер, который сам запрограммировал на java. Игра не потребляет много памяти / процессора / пропускной способности (простые игры, такие как шахматы), но мне нужно поддерживать сокеты tcp, открытые во время входа и выхода пользователя.
Я уже плачу более 100 долларов в месяц за этот выделенный сервер, и пользователи испытывают отставание от 5 до 60 секунд каждые 10-60 минут. На данный момент на сервере одновременно находится от 10 до 40 пользователей.
У меня действительно нет опыта ни в этом, ни в управлении сетью, ни в аренде выделенных серверов. Я умею только программировать. Интересно, нормально ли это из-за проблем с маршрутизацией или перегрузки маршрутизаторов моего хоста? Или что-то другое ?
Возможно ли даже теоретически иметь задержку более 30 секунд на уже открытом TCP-сокете? Я искал в Интернете несколько недель и не нашел ничего по этой теме.
Какие инструменты я могу использовать и как проверить, откуда взялись проблемы, и получить достоверный результат? Я никогда не делал ничего подобного, поэтому чем проще, тем лучше.
Спасибо за вашу помощь.
Если пинговать все ок? Попробуйте выполнить 1000 пингов и проверьте, все ли 100% вернулись нормально. Обычно я начинаю отладку с mtr, чтобы посмотреть, не проходят ли некоторые пакеты. Может быть, произошла некоторая потеря пакетов, и поэтому возникает задержка, поскольку серверу приходится повторно передавать потерянные пакеты tcp.
Я считаю, что для решения этой проблемы может потребоваться дополнительная информация.
Вы уверены, что это проблема с сетью?
Вы можете узнать это с помощью WireShark работает на вашем компьютере, чтобы лучше анализировать, что происходит с TCP-пакетами при возникновении такой проблемы. (чтобы ограничить размер журналов, вы должны ограничить перехваченные пакеты на рассматриваемый сервер).
Могут ли одновременно выполняться другие процессы на сервере, которые замедляют работу вашего приложения? В зависимости от вашей ОС вы можете настроить программное обеспечение для мониторинга таких переменных, как CPU / mem / IO.
Что происходит, когда сокет вашего приложения закрывается из-за сбоя? вы могли наблюдать проблемы с тайм-аутом, которые решаются, когда ваше приложение создает новый сокет?
Кроме того, в случае замедления, о котором вы упомянули, можете ли вы установить ssh / ftp / http-соединения с сервером? Другими словами, влияет ли это замедление на другие вещи, кроме вашего игрового сервиса?
Надеюсь, что некоторые из этих идей могут оказаться полезными.