У меня есть служба python, называемая бережливостью. И я хочу попробовать TThreadPoolServer вместо TThreadedServer. После моих попыток я обнаружил, что мода TThreadPoolServer имеет более низкую скорость процессора, но более низкую скорость. Я думаю, что максимальные потоки по умолчанию в пуле небольшие. Но я не знаю, как настроить эти параметры на бережливом сервере python. мог ли кто-нибудь узнать об этом? Благодарю.На сервере Thrift Python, как настроить максимальные потоки в пуле с помощью TThreadPoolServer?
ответ
См. Определения в исходном коде, TServer.py.
По умолчанию количество потоков в пуле TThreadPoolServer
равно 10. См. Строку 143 в исходном коде под определением класса TThreadPoolServer
.
Вы можете изменить количество потоков в пуле, вызвав следующий метод: TThreadPoolServer.setNumThreads(self, num)
.
UPDATE:
Если ваш сценарий нуждается в большем количестве, чем процессор ввода/вывода, я рекомендую вам попробовать использовать TForkingServer
. Это может работать лучше, чем поточный сервер из-за GIL.
Из комментариев по линии 199-202 в исходном коде, в соответствии с определением TForkingServer
класса:
Сервер Бережливость, что новый Сервер порождает процесс для каждого запроса
Это более масштабируемым, чем сервер с резьбой, поскольку он не вызывает конкуренции GIL.
Можете ли вы предоставить ссылки в своем ответе на документацию, на которую вы ссылаетесь? В частности, ссылка на источник, в которой указано, что максимальное количество потоков по умолчанию в TThreadPoolServer составляет 10 * и * файл dorkstring TForkingServer. –
Спасибо, это работает! Я не нахожу связанных api docs о бережливости в Интернете. Можете ли вы дать несколько советов о связанных с этим материалах? Еще раз спасибо! – findtruth
По умолчанию количество потоков и docstring для 'TForkingServer' я взял из Thrift (v0.9.3) исходных кодов. Я добавил ссылку на файл с определениями. – Arnial
@VladislavMartin: В вашем предложении отсутствуют некоторые слова, чтобы иметь смысл. Мое предложение состоит в том, чтобы вставить «* ограничено», прежде чем «* будет правильным *». – JensG
@JensG: Упс! ... Согласно анализу/тестированию сервера GitHub для серверов Thrift, вы предполагаете, что [максимальное количество потоков в пуле 'TThreadPoolServer' ограничено] (https://github.com/m1ch1/mapkeeper/wiki/TThreadedServer -vs.-TNonblockingServer # tthreadpoolserver-not-benchmarked-here) является правильным. Как было сказано в ответе @ Арниаля, вы можете найти в исходном коде, что предел по умолчанию равен 10. –