Я начну с того, что это спекуляция с моей стороны (я не слишком знаком с этим аспектом обработки Apache), но это было немного длинно для комментария, и, надеюсь, это поможет с расследованиемэто немного дальше.
Поскольку вы, вероятно, используете MPM наподобие prefork
, метод управления дочерними процессами Apache заключается в отправке им запроса на их пробуждение.Я полагаю, что раньше это был запрос GET
, но, учитывая, что запрос реального ресурса может создать ненужную нагрузку на сервер для этой цели, похоже, что теперь он вместо этого отправляет запрос OPTION
.
Вы также сказали, что для KeepAlive
установлено значение On
.Если ваши запросы занимают значительное количество времени (по сравнению с обычным запросом), вполне возможно, что ваши дочерние процессы привязаны к точке, где сервер должен порождать новые для обработки дополнительного входящего трафика.Следовательно, если ваше значение MaxSpareServers
установлено достаточно низким, после того, как процессы освободятся, Apache может убить множество дочерних элементов.
Чтобы убить их, необходимо установить этоOPTION
запрос в вашем журнале, чтобы убедиться, что они не спят.Это в конечном итоге будет обработано вашим правилом mod_rewrite
, которое, будучи объединено со всем остальным, может привести к крайне медленному замедлению, которое вы испытываете.
Я не уверен, почему ваше RewriteCond
нене работает, чтобы предотвратить перенаправление.Вы можете попробовать это, но я не уверен, почему все будет иначе:
RewriteCond %{REQUEST_METHOD} =OPTIONS [NC]
RewriteRule ^.*$ - [R=200,L]
RewriteCond %{HTTP_HOST} !=www.example.com [NC]
RewriteRule ^.*$ http://www.example.com/$0 [R=301,L]