Spec-Zone .ru
спецификации, руководства, описания, API
|
Если Вы включаете реализации потока в пределах, создавая memcached
из источника, то memcached использует многократные потоки в
дополнение к libevent
система, чтобы обработать запросы.
Когда включено, реализация поточной обработки работает следующим образом:
Поточная обработка обрабатывается, обертывая функции в пределах кода, чтобы обеспечить основную защиту от обновления тех же самых глобальных структур одновременно.
Каждый поток использует свой собственный экземпляр libevent
помочь улучшить производительность.
Соединения TCP/IP обрабатываются с единственным потоком, слушающим на сокете TCP/IP. Каждое соединение тогда распределяется одному из активных потоков на простой круговой основе. Каждое соединение тогда работает исключительно в пределах этого потока, в то время как соединение остается открытым.
Для соединений UDP все потоки слушают единственный сокет UDP для входящих запросов. Потоки, которые в настоящий момент не имеют дело с другим запросом, игнорируют входящий пакет. Один из остающихся, незанятых, потоки читают запрос и отправляют ответ. Эта реализация может привести к увеличенной загрузке ЦП, поскольку потоки просыпаются от сна, чтобы потенциально обработать запрос.
Используя потоки может увеличить производительность на серверах, которые имеют многократные ядра ЦП в наличии, поскольку запросы, чтобы обновить хэш-таблицу могут быть распространены между отдельными потоками. Чтобы минимизировать издержки от используемого механизма блокировки, экспериментируйте с различными значениями потока, чтобы достигнуть лучшей производительности, основанной на числе и типе запросов в пределах Вашей данной рабочей нагрузки.