|
|
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Всем привет! Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов. Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками. В чем может быть проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 16:27:36 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Нагрузочное теситрование и профилирование не помешали бы. При постоянном соединении в 800 на сервер, может быть что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:04:11 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Могут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:17:27 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreМогут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера? Настройте GC Log - посмотрите заполнение памяти и распределение по поколениям. Настройте какой-нибудь монитор CPU и дискового IO, чтобы посмотреть нагрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 17:22:06 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
А ещё очень полезный подход запускать пинг в параллель и смотреть нет ли проблем с сетью :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 21:50:51 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreВсем привет! Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов. Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками. В чем может быть проблема? А можете подробнее написать? Ну, типа, что за игра и так далее. Это - не любопытство. Сам сейчас играми-онлайн занимаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2012, 22:04:46 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза. А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 16:57:07 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreПо ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза. Да, это действительно проблема. А зачем в игре SQL? Не проще ли запросы оптимизировать, да базёнку подтюнинговать? mreА есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса? Асинхронность требует изменения работы логики. У нас был один проект. Клиенты просто накидывают изменения в сервер. А сервер всех уже нотифицирует, после комита в базу. В результате никто не ждет комитов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:03:10 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreСпасибо за ответы. По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза. А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса? где то твоя цепочка асинхронности должна упереться в "ждём результат". Можно, но геморрой. Лучше выясни почему тормозит... кэша нет? Запрос тяжёлый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:03:52 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mre, зайди на gameDev, там для сетевых игр используют спец.игровые сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:09:37 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Да запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:27:48 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
В смысле, по одному на модуль, всего штук 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:28:22 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreДа запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше. Если у вас потоки ждут запросов, то не связано ли это с лимитом соединений? Почему именно про потоки вы заговорили? И что такое эти самые условные модули? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:36:16 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mre, то запросы ждут, то потоки ждут. Советовали - профилировка. Найди УЗКОЕ место. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:38:30 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Модули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:47:59 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreМодули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д. У вас 800 клиентов онлайн обслуживаются 5ю потоками??? Свой LMAX что ли написали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:49:45 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Думаю, нужно еще разделить каждый модуль на какое-то количество потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:50:51 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Может с терминологией что не так? Поток в вашем понимании это Thread? Поток выполнения процессором кода? Или вы про какие-то свои IO потоки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:51:25 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
А какое количество потоков можно вообще использовать в среднем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:52:08 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Thread. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:55:39 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreА какое количество потоков можно вообще использовать в среднем? пул соединений с БД можно делать и 1000 и 2000 коннектов. Т.е. если у вас поток-соеднение, то понятно, что все будут 800 ждать 5 соединений по очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:57:08 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Просто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:57:21 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreПросто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае. А потоки эти у вас откуда берутся? И почему их так мало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 17:58:43 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
Одно дело, когда мне нужно просто сапдейтить таблицу, я могу не ждать, отправив запрос через пул, но если мне нужно получить результат запроса, потому меня интересуют пулы, где можно подписываться на слушатель и не ждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 18:00:11 |
|
||
|
Сокеты: задержа при получении данных
|
|||
|---|---|---|---|
|
#18+
mreПросто в потоках выполняются блокирующие операции - Sql-запросы это не тот термин. Есь поток, у него всегда должен быть СВОБОДНЫЙ коннект. Потом он ждёт запрос, т.к. результат нужен НЕЗАМЕДЛИТЕЛЬНО и сразу. Если все эти условия соблюдены - то ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2012, 18:01:22 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37714011&tid=2132243]: |
0ms |
get settings: |
14ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
49ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 356ms |
| total: | 548ms |

| 0 / 0 |
