У меня есть веб-сервер, единственной задачей которого является запуск обработки изображений.
При обработке изображений на веб-сервере загружается тот же файл настроек XML (до 2 МБ).
Чтобы сэкономить время загрузки XML-файла для каждого запроса, я использую следующую архитектуру:
- Веб-сервер Apache (2.2.16) с предфорком MPM и FastCGI (fcgi_mod) с приложением для обработки изображений (C ++).
Запущенное приложение для обработки изображений загружает файл XML и порождает N потоков, и каждый поток запускается:
thread_func ()
{
FCGX_InitRequest
в то время как (истина)
{
FCGX_Accept_r
Обработка запроса (изображения) и FCGX_FPrintF / FCGX_PutStr
FCGX_Finish_r
}
}
Одним из недостатков этой модели является то, что максимум один поток в каждом процессе Apache будет выполнять свою работу, находясь между вызовами FCGX_Accept_r и FCGX_Finish_r. Стоит ли тогда иметь 1 thread only на процесс (один поток), но для увеличения MaxClients?
Заранее спасибо:)