Довольно внезапно, мой сервер стал сбоить. Внешне это выглядело как отсутствие ответа от сервера, которое может быть вызвано, например, большой загруженностью. Быстрый анализ показал, что в моменты, когда сервер не отвечает, он не загружен. Ошибка появлялась произвольно, я связываю её с попыткой загрузки страниц, использующих ajax. Временно устранить ошибку помогал только перезапуск сервера.
Информация о компьютере с сервером: Windows x64, Apache x64. Хотя, как выяснилось позже, эта проблема уже довольно древняя и встречалась и на предыдущих версиях Apache.
Я посмотрел логи ошибок сервера и увидел там следующее:
[Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00455: Apache/2.4.9 (Win64) PHP/5.5.13 configured -- resuming normal operations [Thu Jun 05 07:24:55.747090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:42:59 [Thu Jun 05 07:24:55.747090 2014] [core:notice] [pid 1784:tid 444] AH00094: Command line: 'c:\Server\bin\Apache24\bin\httpd.exe -d C:/Server/bin/Apache24' [Thu Jun 05 07:24:55.748090 2014] [mpm_winnt:notice] [pid 1784:tid 444] AH00418: Parent: Created child process 4952 [Thu Jun 05 07:24:55.957978 2014] [mpm_winnt:notice] [pid 4952:tid 388] AH00354: Child: Starting 64 worker threads. [Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. [Thu Jun 05 07:26:16.695036 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. [Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. [Thu Jun 05 07:26:48.250710 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. [Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed. [Thu Jun 05 07:29:27.137784 2014] [mpm_winnt:warn] [pid 4952:tid 1112] (OS 64)Указанное сетевое имя более недоступно. : AH00341: winnt_accept: Asynchronous AcceptEx failed.
Гугление вывело меня на баг-репорты и на форумы по Apache. По итогам чтения, появились две новости: хорошая и плохая. Плохая новость заключается в том, что эта ошибка появляется на Apache версий 2.2 и 2.4 и при этом точного ответа, с чем она связана, нет. Зато хорошая новость заключается в том, что есть решение этой проблемы! В файл httpd.conf нужно добавить следующие строки:
Для 2.2:
Win32DisableAcceptEx EnableSendfile off EnableMMAP off
Для 2.4:
AcceptFilter http none AcceptFilter https none EnableSendfile off EnableMMAP off
Я не знаю, что именно делают эти настройки — т.к. авторы, которые их предложили, этот вопрос не раскрыли. Но это работает! Это могу подтвердить я, а также подтверждают другие, кто сталкивался с этой проблемой.
Следующим шагом, после настройки и тестирования сайта на локалхосте, является выбор качественного и дешёвого интернет хостинга. Я перебрал довольно много решений и нашёл очень хороший вариант — 100 рублей в месяц! За эти деньги даётся профессиональный хостинг, с отличным аптаймом, с бесплатным доменом второго уровня в подарок (!), с 2 гигабайтами места на SSD диске, с неограниченным количеством баз данных, с возможностью подключать неограниченное количество новых доменов (платить придётся только за каждый новый домен — 139 рублей). Вообще, всего хорошего так много, что проще всего посмотреть это здесь.
Кстати, а ведь как здорово иметь собственное доменное имя! Хотя бы для того, чтобы сделать для себя красивый почтовый ящик, вместо чего-нибудь вроде vovan_pupkin_murom1995@mail.ru. Вот здесь можно найти свой собственный домен. Например, я получил бесплатно домен codeby.net, я могу делать почтовые ящики: admin@codeby.net, alex@codeby.net, al@codeby.net и так далее — количество ящиков ничем не ограничено!
Посмотрите, я уверен, это предложение заинтересует любого администратора сайта (хоть начинающего, хоть продвинутого), поскольку это хостинг с настоящим качеством от профессионалов. Кстати, у меня есть промокод, дающий бесплатный месяц, если хотите, можете воспользоваться.
Спасибо. Очень помогло. Замечательный сайт,
Точно такая же проблема, спасибо!