Недавно я попытался запустить несколько тестов, и я хотел что-то проверить в Windows, и обнаружил огромные различия в производительности между базовыми веб-серверами HTTP на одной машине с Linux и Windows.
Я тестировал несколько веб-серверов IIS, Apache2, Lighttpd с разными клиентами Apache ab и моим собственным клиентом, и результат был тем же (запросов в секунду) id, отображающим простую веб-страницу HTML (страница веб-сервера по умолчанию) размером в несколько сотен байтов. размер:
IIS 7.5 Apache 2.2 Lighttpd
Windows 750 800 -
Linux - 9,300 22,000
Я пытался отключить Антивирус в Windows, но результат не изменился.
Я не понимаю одного, как дела тем же аппаратно (i5 2,4 ГГц 4G) веб-сервер в самой тривиальной задаче не справляется с такими же нагрузками.
Даже если я «про-Linux», я все еще не могу понять, как это может быть так по-разному. Обе 64-битные новейшие операционные системы (Linux 2.6.35 и Windows 7), но разница на порядок.
Окружающая среда:
ab -c 5 -n 10000 http://127.0.0.1/
Вопрос:
Перед тем, как проголосовать за закрытие:
Обратите внимание, что это реальный вопрос, поскольку я ищу возможные факторы, которые могут повлиять на такие огромные (на порядок) различия в производительности, поскольку я не могу поверить, что Windows может вести себя так плохо.
Кто-нибудь?
Для всех респондентов, которые предложили использовать Windows Server 2008 ...
Это был АниВирус. Он не был отключен должным образом.
После его отключения производительность улучшилась с 600 до 5000 запросов / с - не так хорошо, как в Linux, но, по крайней мере, разумно.
Мне было бы больше интересно увидеть сравнение с Server R2. Windows 7 не должна запускать веб-серверы, хотя я согласен, что разница в результатах кажется очень большой.
Тест, который вы могли бы провести, чтобы увидеть, связано ли это со слоем ОС или ниже, состоял бы в том, чтобы повторно запустить тест Linux, находясь на виртуальной машине с Windows 7. Если вы испытываете аналогичные числа, но немного меньше, то исходный Linux это доказывает, что Windows 7 ответственна. Если вы испытываете числа, похожие на Windows 7, у вас может быть проблема с тем, как Windows 7 использует ваше оборудование, возможно, проблема с драйвером или аналогичная проблема низкого уровня.
Тестирование статической страницы с небольшим количеством контента или без него при использовании ограниченного количества подключений - плохой тест.
Что вы хотите сделать, так это смоделировать 30+ пользователей, обращающихся к страницам, которые одновременно используют PHP и MySQL с несколькими активами.
В этом случае вы увидите, что хорошо настроенный WAMP (например, WampDeveloper, который я использую) соответствует или превосходит аналогичную настройку LAMP.
В Windows потоки являются предпочтительным механизмом (по сравнению с моделями на основе процессов в Linux).
Убедитесь, что вы используете PHP как модуль на основе потоков (а не процесс FCGI, хотя это тоже подойдет).
Отредактируйте настройки Apache KeepAlive и MPM ...
C: \ WampDeveloper \ Config \ Apache \ extra \ httpd-default.conf
KeepAlive On
KeepAliveTimeout 1
C: \ WampDeveloper \ Config \ Apache \ extra \ httpd-mpm.conf
ThreadsPerChild 64
ThreadLimit 64
Это создаст около 64 потоков, каждый из которых будет работать с одним и тем же клиентом около 1 секунды.
ab -c 32 -n 10000 http://127.0.0.1/page-with-PHP-and-MySQL-and-Assets.php