Когда App Engine (Java) раскручивает новые экземпляры, как я могу гарантировать, что cron Memcache очереди задач совместно используется между ними?
Это проблема, когда мое приложение испытывает случайные пики ограничения ЦП на сайте, на котором почти вся работа выполняется в результате задачи cron, которая часто запускается каждый час для вызова очереди задач, которая заполняет memcache.
Недавно сайт получил большой всплеск трафика, что привело к увеличению количества экземпляров.
Однако, к моему удивлению, мне пришлось снизить частоту выполнения задачи Memcache в те дни, хотя менее 1% использования ЦП было связано с резким увеличением трафика. (99% работы, выполняемой в этом приложении, выполняется (а) в очереди задач memcache и (б) в логике JavaScript/JSON на стороне клиента).
Что меня интересует, так это то, требуют ли дополнительные экземпляры, которые были запущены, для своих собственных очередей задач Memcache, и, возможно, именно поэтому я увидел гораздо более высокую загрузку ЦП, связанную с очередью задач, которая заполняет memcache в те дни - задача была на самом деле выполняется отдельно для каждого экземпляра?
Если да, то как я могу гарантировать, что очередь задач и заполняемый ею Memcache распределяются между экземплярами - если это вообще возможно?
1 ответ
Очередь задач и memcache являются глобальными. Вполне вероятно, что вы ставили задачу в очередь каким-то образом, который зависел от количества экземпляров, поэтому вы запускали больше задач, чем следовало - невозможно сказать, не увидев свой код.