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