powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты: задержа при получении данных
35 сообщений из 35, показаны все 2 страниц
Сокеты: задержа при получении данных
    #37713832
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Всем привет!
Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов.
Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками.
В чем может быть проблема?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37713944
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нагрузочное теситрование и профилирование не помешали бы. При постоянном соединении в 800 на сервер, может быть что угодно.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37713996
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Могут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37714011
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreМогут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера?
Настройте GC Log - посмотрите заполнение памяти и распределение по поколениям.
Настройте какой-нибудь монитор CPU и дискового IO, чтобы посмотреть нагрузку.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37714534
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё очень полезный подход запускать пинг в параллель и смотреть нет ли проблем с сетью :)
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37714551
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreВсем привет!
Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов.
Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками.
В чем может быть проблема?
А можете подробнее написать? Ну, типа, что за игра и так далее. Это - не любопытство. Сам сейчас играми-онлайн занимаюсь.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718315
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Спасибо за ответы.
По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.
А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718327
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreПо ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.

Да, это действительно проблема. А зачем в игре SQL? Не проще ли запросы оптимизировать, да базёнку подтюнинговать?

mreА есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
Асинхронность требует изменения работы логики. У нас был один проект. Клиенты просто накидывают изменения в сервер. А сервер всех уже нотифицирует, после комита в базу. В результате никто не ждет комитов.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718332
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreСпасибо за ответы.
По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.
А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
где то твоя цепочка асинхронности должна упереться в "ждём результат".
Можно, но геморрой. Лучше выясни почему тормозит... кэша нет? Запрос тяжёлый?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718346
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mre,
зайди на gameDev, там для сетевых игр используют спец.игровые сервера.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718408
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Да запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718410
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
В смысле, по одному на модуль, всего штук 5.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718438
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreДа запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше.
Если у вас потоки ждут запросов, то не связано ли это с лимитом соединений? Почему именно про потоки вы заговорили? И что такое эти самые условные модули?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718444
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mre,
то запросы ждут, то потоки ждут.
Советовали - профилировка. Найди УЗКОЕ место.
Удачи!
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718478
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Модули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718482
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreМодули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д.
У вас 800 клиентов онлайн обслуживаются 5ю потоками??? Свой LMAX что ли написали?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718485
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Думаю, нужно еще разделить каждый модуль на какое-то количество потоков.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718487
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может с терминологией что не так? Поток в вашем понимании это Thread? Поток выполнения процессором кода?
Или вы про какие-то свои IO потоки?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718493
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
А какое количество потоков можно вообще использовать в среднем?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718505
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Thread.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718510
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreА какое количество потоков можно вообще использовать в среднем?
пул соединений с БД можно делать и 1000 и 2000 коннектов.
Т.е. если у вас поток-соеднение, то понятно, что все будут 800 ждать 5 соединений по очереди.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718511
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Просто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718515
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreПросто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае.
А потоки эти у вас откуда берутся? И почему их так мало?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718520
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Одно дело, когда мне нужно просто сапдейтить таблицу, я могу не ждать, отправив запрос через пул, но если мне нужно получить результат запроса, потому меня интересуют пулы, где можно подписываться на слушатель и не ждать.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreПросто в потоках выполняются блокирующие операции - Sql-запросы
это не тот термин.
Есь поток, у него всегда должен быть СВОБОДНЫЙ коннект. Потом он ждёт запрос, т.к. результат нужен НЕЗАМЕДЛИТЕЛЬНО и сразу.
Если все эти условия соблюдены - то ОК.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718523
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreОдно дело, когда мне нужно просто сапдейтить таблицу, я могу не ждать, отправив запрос через пул, но если мне нужно получить результат запроса, потому меня интересуют пулы, где можно подписываться на слушатель и не ждать.
Вы путаете мягкое с теплым. Нужна рассинхронизация - беретё любую Message Queue и переписываете на неё. Только это тернистый путь.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718526
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
авторА потоки эти у вас откуда берутся? И почему их так мало?

Для каждого модуля есть класс - обработчик команд от сокета, он наследуется от треда и стартует при запуске сервера.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718532
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mre,
пул не для этого. Пул чтобы ДРУГОЙ поток не ждал. А этот запрос будет ждать всё равно.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718535
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mreДля каждого модуля есть класс - обработчик команд от сокета, он наследуется от треда и стартует при запуске сервера.
Что мешает использовать пул потоков через ExceutiorService?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718543
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mre,
дайте каждому модулю по пулу и увеличьте размер пула(ов) до 1000 соединений и всё.
imho
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718544
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Petro123,
То есть, в пуле нельзя использовать запросы, которые что-то возвращают необходимое?
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718547
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
авторЧто мешает использовать пул потоков через ExceutiorService?

Почитаю что такое, спасибо.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718557
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrePetro123,
То есть, в пуле нельзя использовать запросы, которые что-то возвращают необходимое?
не понял вопроса.
Пул это просто список-List объектов Connection. Всё.
Теоретически ты можешь при старте нити с сокета, на её каждую создать соединение.
Пока игрок не отвалится. Т.е. 800 соединений к серверу в прам-тайм.
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718560
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зайди на тот сайт, там есть раздел - сетевые игры.
Если у тебя счас 800, то лучше изучить специфику.
Удачи!
...
Рейтинг: 0 / 0
Сокеты: задержа при получении данных
    #37718568
mre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mre
Гость
Petro123, спасибо.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты: задержа при получении данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]