Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты: задержа при получении данных / 25 сообщений из 35, страница 1 из 2
20.03.2012, 16:27:36
    #37713832
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Всем привет!
Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов.
Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками.
В чем может быть проблема?
...
Рейтинг: 0 / 0
20.03.2012, 17:04:11
    #37713944
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Нагрузочное теситрование и профилирование не помешали бы. При постоянном соединении в 800 на сервер, может быть что угодно.
...
Рейтинг: 0 / 0
20.03.2012, 17:17:27
    #37713996
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Могут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера?
...
Рейтинг: 0 / 0
20.03.2012, 17:22:06
    #37714011
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreМогут ли возникать подобные проблемы при слишком частом чтении/отправке данных (какие нибудь очереди соединений и т.п.) или же проблему следует искать в алгоритмах работы, утечках памяти или еще чем то, связанным с логикой конкретного сервера?
Настройте GC Log - посмотрите заполнение памяти и распределение по поколениям.
Настройте какой-нибудь монитор CPU и дискового IO, чтобы посмотреть нагрузку.
...
Рейтинг: 0 / 0
20.03.2012, 21:50:51
    #37714534
rrrrrrrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
А ещё очень полезный подход запускать пинг в параллель и смотреть нет ли проблем с сетью :)
...
Рейтинг: 0 / 0
20.03.2012, 22:04:46
    #37714551
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreВсем привет!
Сервер для реал-тайм игры написан на JAVA nio с использованием неблокирующих сокетов.
Проблема возникает при онлайне больше 800 человек: иногда данные, отправленные сервером пользователям начинают приходить с задержками.
В чем может быть проблема?
А можете подробнее написать? Ну, типа, что за игра и так далее. Это - не любопытство. Сам сейчас играми-онлайн занимаюсь.
...
Рейтинг: 0 / 0
22.03.2012, 16:57:07
    #37718315
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Спасибо за ответы.
По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.
А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
...
Рейтинг: 0 / 0
22.03.2012, 17:03:10
    #37718327
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreПо ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.

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

mreА есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
Асинхронность требует изменения работы логики. У нас был один проект. Клиенты просто накидывают изменения в сервер. А сервер всех уже нотифицирует, после комита в базу. В результате никто не ждет комитов.
...
Рейтинг: 0 / 0
22.03.2012, 17:03:52
    #37718332
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreСпасибо за ответы.
По ходу проблема в том, что при выполнении sql-запросов, поток ожидает окончания выполнения и возникают тормоза.
А есть ли библиотеки sql pool для выполнения асинхронных (параллельных) запросов, то есть, чтобы можно было подписываться на событие завершения выполнения запроса?
где то твоя цепочка асинхронности должна упереться в "ждём результат".
Можно, но геморрой. Лучше выясни почему тормозит... кэша нет? Запрос тяжёлый?
...
Рейтинг: 0 / 0
22.03.2012, 17:09:37
    #37718346
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mre,
зайди на gameDev, там для сетевых игр используют спец.игровые сервера.
...
Рейтинг: 0 / 0
22.03.2012, 17:27:48
    #37718408
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Да запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше.
...
Рейтинг: 0 / 0
22.03.2012, 17:28:22
    #37718410
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
В смысле, по одному на модуль, всего штук 5.
...
Рейтинг: 0 / 0
22.03.2012, 17:36:16
    #37718438
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreДа запросов не много и не тяжелые, просто потоков не достаточно, их сейчас штук 5 на каждый модуль, видимо, нужно больше.
Если у вас потоки ждут запросов, то не связано ли это с лимитом соединений? Почему именно про потоки вы заговорили? И что такое эти самые условные модули?
...
Рейтинг: 0 / 0
22.03.2012, 17:38:30
    #37718444
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mre,
то запросы ждут, то потоки ждут.
Советовали - профилировка. Найди УЗКОЕ место.
Удачи!
...
Рейтинг: 0 / 0
22.03.2012, 17:47:59
    #37718478
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Модули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д.
...
Рейтинг: 0 / 0
22.03.2012, 17:49:45
    #37718482
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreМодули, ну, например, магазин, все операции пользователя с магазинов выполняются в отдельном потоке, чат - в другом и т.д.
У вас 800 клиентов онлайн обслуживаются 5ю потоками??? Свой LMAX что ли написали?
...
Рейтинг: 0 / 0
22.03.2012, 17:50:51
    #37718485
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Думаю, нужно еще разделить каждый модуль на какое-то количество потоков.
...
Рейтинг: 0 / 0
22.03.2012, 17:51:25
    #37718487
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Может с терминологией что не так? Поток в вашем понимании это Thread? Поток выполнения процессором кода?
Или вы про какие-то свои IO потоки?
...
Рейтинг: 0 / 0
22.03.2012, 17:52:08
    #37718493
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
А какое количество потоков можно вообще использовать в среднем?
...
Рейтинг: 0 / 0
22.03.2012, 17:55:39
    #37718505
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Thread.
...
Рейтинг: 0 / 0
22.03.2012, 17:57:08
    #37718510
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreА какое количество потоков можно вообще использовать в среднем?
пул соединений с БД можно делать и 1000 и 2000 коннектов.
Т.е. если у вас поток-соеднение, то понятно, что все будут 800 ждать 5 соединений по очереди.
...
Рейтинг: 0 / 0
22.03.2012, 17:57:21
    #37718511
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Просто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае.
...
Рейтинг: 0 / 0
22.03.2012, 17:58:43
    #37718515
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreПросто в потоках выполняются блокирующие операции - Sql-запросы, и даже если запросы выполняются быстро, задержка ведь небольшая будет в исполнении кода в любом случае.
А потоки эти у вас откуда берутся? И почему их так мало?
...
Рейтинг: 0 / 0
22.03.2012, 18:00:11
    #37718520
mre
mre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
Одно дело, когда мне нужно просто сапдейтить таблицу, я могу не ждать, отправив запрос через пул, но если мне нужно получить результат запроса, потому меня интересуют пулы, где можно подписываться на слушатель и не ждать.
...
Рейтинг: 0 / 0
22.03.2012, 18:01:22
    #37718521
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сокеты: задержа при получении данных
mreПросто в потоках выполняются блокирующие операции - Sql-запросы
это не тот термин.
Есь поток, у него всегда должен быть СВОБОДНЫЙ коннект. Потом он ждёт запрос, т.к. результат нужен НЕЗАМЕДЛИТЕЛЬНО и сразу.
Если все эти условия соблюдены - то ОК.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты: задержа при получении данных / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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