В итоге полный опрос клана 18-19 секунд account/info, account/raitings, account/tanks - последние имеют максимальную задержку результата. Плюс косяк в собственном парсере, который сам по себе работает ещё секунд 10-15 (обработка данных начинается после возврата всех результатов).
shizzard (10 Окт 2013 - 12:46) писал:
Так происходит потому что ваши запросы обрабатываются разными потоками на сервере. Судя по зависимости времени обработки O(N) от числа аккаунтов они вытаскиваются из базы последовательно. Если вы лупите в несколько потоков, запросы распараллеливаются. Так что в вашем случае, если игнорировать лимит на количество запросов в секунду, лучшим вариантом будет запрашивать данные параллельно, по одному игроку/клану в запросе. С учетом лимита цифры нужно изменять.
Если у вас лимит в 4 запроса в секунду, то оптимальным вариантом для вас будет выполнение пачек из 4 параллельных запросов, каждый из которых запрашивает данные о N сущностей так, чтобы каждый запрос выполнялся в районе одной секунды.
Не выходит идеальных условий. Экспериментально получилось, что при запросе пачек менее или более 15 аккаунтов время обработки начинает увеличиваться. На фоне инфо и рейтинга танки выглядят узким местом, хотя откровенно говоря данных по ним не в пример больше отдаётся. Делаю отбор только по значимым полям. Хотя, возможно следует получать полную простыню, но тогда возрастёт нагрузка на парсер... Который и без того надо ковырять и править...