Я устраняю неполадки в приложении для загрузки файлов, зависящих от времени, и подозреваю, что проблема может быть связана с KeepAliveTimeout
директивой Apache. Только что позвонил в службу поддержки хостинга и спросил, каковы настройки. Мне сказали: «Это не общедоступная информация». У меня есть доступ к shell к серверу общего хостинга.
Поиск httpd.conf
завершается безуспешно.
Есть ли способ узнать значение директивы, не имея доступа к httpd.conf
?
решение1
Попробуйте httpd -V
. Это покажет вам, где Apache ищет файл(ы) конфигурации. Вы ищете что-то вроде:
-D ФАЙЛ_КОНФИГУРАЦИИ_СЕРВЕРА="conf/httpd.conf"
Есть возможность показать настройки, но в данный момент она не очень полезна:-S Show the settings as parsed from the config file (currently only shows the virtualhost settings).
Если у вас есть доступ к настройкам vhost, то вы можете установить TimeOut
самостоятельно:
http://httpd.apache.org/docs/2.2/mod/core.html#timeout
Надеюсь, это поможет.
решение2
Apache и NGinx используют 5 минут в качестве тайм-аута keepalive по умолчанию.
Скорее всего, у вас нет доступа к этой информации — она будет содержаться в файле конфигурации сервера — обычно недоступном для клиентов, если хостинговая компания хоть немного в курсе событий. Вы можете узнать, какой сервер, с помощью простых сетевых инструментов, таких как nmap.
Возможно, вы могли бы использовать telnet:
telnet host 80
в telnet попробуйте:
get / HTTP/1.0
В ответе найдите строку, начинающуюся
Server:
Вы можете вывести список процессов сервера с помощью 'ps ax' - вы можете получить полный список, а можете и не получить. Apache в настоящее время отображается как apache2 или, может быть, httpd, в зависимости от разновидности ОС.
Используя curl, вы можете создать командную строку, которая будет использовать тайм-аут keepalive и доказывать это тем или иным способом. К сожалению, на данный момент я не знаю, как это будет выглядеть.