2016-07-29 1 views
1

У меня есть сервер приложений, который становится мучительно сложным в том, что он должен буферизовать данные из входящих запросов, а затем выталкивать эти буферы через pubsub после получения достаточно. Буферизация - это не проблема, но эффективная блокировка ... волосатая, и я обеспокоен тем, что она замедляет мой сервис. Я рассматриваю возможность снижения безопасности потоков, чтобы удалить все блокировки, но я обеспокоен тем, что для моего экземпляра экземпляра приложения придется удвоить (или больше) для обработки одной и той же нагрузки пользователя.В чем преимущество обеспечения безопасности приложения appengine?

Насколько я понимаю, приложение для потокобезопасности является тем, где каждый поток является экземпляром приложения с выставленным счетом. Другими словами, я получаю счет за два экземпляра, позволяя запускать несколько потоков в процессе, и единственным преимуществом является то, что потоки могут совместно использовать память и, следовательно, иметь меньший общий размер.

Так что, чтобы перефразировать, многопользовательский экземпляр приложения обрабатывает несколько одновременных подключений или каждый экземпляр экземпляра счета представляет собой отдельный поток, который способен обрабатывать только один запрос за раз? Если я удалю проблему безопасности потоков, мне понадобится запустить большой пул приложений?

ответ

0

Многопоточность не связана с выставлением счетов в любом случае - вы по-прежнему платите за один экземпляр, даже если в этом экземпляре параллельно работает 10 потоков.

+0

Другими словами, если я откажу от безопасности нитей, мне понадобятся дополнительные экземпляры ... – Sniggerfardimungus

+0

Как правило, да. Но поскольку вы говорите о блокировке и тому подобное, я чувствую, что, возможно, есть возможность улучшить ваш существующий код. –

+0

Я заполняю несколько различных буферов, в зависимости от данных, находящихся в очереди. Когда буфер заполнен (или превышает определенный возраст), я выталкиваю его через pubsub. Каждый буфер имеет свой собственный замок и блокируется только при его изменении. Если экземпляр обслуживает несколько одновременных запросов, есть хорошая вероятность, что происходит некоторая блокировка (есть много буферов, но 2-4 из них - ОЧЕНЬ высокий трафик.) Если я нахожу, что я должен скрыться в pubsub , Я не делаю этого, удерживая замок. Я публикую ссылку на буфер, заменив буфер пустым списком, удерживая блокировку. – Sniggerfardimungus

Смежные вопросы