Я разрабатываю сценарии PHP веб-сервера для извлечения мозаичных изображений для покрытия земных поверхностей, таких как World Wind .
Предположим, у меня есть get_image.php
, который возвращает image/jpeg
или image/png
в качестве ответа.
Исходное условие также состоит в том, что у меня есть Windows Server 2003 для тестирования моего скрипта и предустановленный Apache 2.2.16 с потоковой моделью. Поэтому мне пришлось установить многопоточный PHP 5.3, чтобы использовать его в качестве модуля Apache.
После того, как скрипт был успешно написан, я решил провести нагрузочное тестирование, используя JMeter . Начиная с одного виртуального пользователя, выполняющего запрос не более чем за 0,5 секунды, и увеличивая количество виртуальных пользователей каждую минуту в момент времени, когда девять виртуальных пользователей получают некоторые необработанные запросы, хотя, просматривая диспетчер задач сервера, я вижу не более 8- 10% процессора. Максимальная производительность, которую я получаю, составляет 1600-1700 успешных ответов в минуту (запросы генерируются восемью виртуальными пользователями).
Я не системный администратор и не имел опыта работы с высокими показателями производительности, поэтому мой вопрос: может ли это быть проблемой безопасности потоков PHP, обсуждаемой здесь ? Как я могу определить проблему, с которой сталкиваюсь? Было бы лучше попробовать мой сценарий как CGI с IIS + FastCGI, или мы должны посмотреть на веб-сервер на базе Linux?
P.S. Я также использую memcached
сервер и php_memcache.dll
(так называемая версия с поддержкой потоков), загруженная с http://downloads.php.net/pierre. Этот модуль официально не поддерживается для Windows и, вероятно, он не является действительно безопасным для потоков, поэтому он может вызвать дополнительный эффект. Моя проблема в случае описанной проблемы - проблема с безопасностью потока PHP.