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.

http://www.bitwizard.nl/mtr/

Другие вопросы по тегам