Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Периодически возникает проблема с Apache 
:(
    Опции темы
iAnthony
Дата 8.3.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



Добрый вечер!

В последнее время стала возникать проблема с сервером. Стоит на виртуальной машине Windows Server 2003, на сервере установлен Apache + PHP + Zend Optimizer и MySQL, плюс сервер играет роль DNS. Все работало прекрасно до добавления очередного виртуального хоста на Apache. При входе на этот сайт у клиентов периодически возникает проблема и страница не открывается:
Firefox пишет "Соединение было сброшено. Во время загрузки страницы соединение с сервером было сброшено.", остальные браузеры просто сообщают, что страница временно не доступна.

Спустя некоторое время заметил, что аналогичная проблема возникла и на другом виртуальном хосте, который ранее функционировал без каких-либо нареканий. Не уверен, но как мне кажется, что проблема возникает при загрузке динамических PHP страниц, потому что после того как возникла данная проблема я попробовал открыть главную страницу сайта, которая написана на HTML - ни каких ошибок не произошло, потом снова попытался открыть PHP страницу и соединение вновь сбросилось.

Я предположил, что не хватает оперативки, но, расширив ее еще на 1 Гб, ситуация не изменилась. Больше пока идей никаких нет на счет этой проблемы, единственное, после установки Windows Server 2003 VMWare мне предложил что-то сделать для производительности, после чего я где-то ткнул галку, и первое что заметил курсор стал быстрее перемещаться и без мерцаний, но спустя какое-то время настройки эти сбились, окна стали медленно прорисовываться, курсор снова медленнее стал перемещаться, но вроде все функционировало и я не стал заморачиваться с этим. Теперь думаю, хотя и маловероятно, но не могло ли это сказаться на работоспособности сервера? Или в чем же причина сбросов соединений?

Я постарался детально описать проблему, но если будут вопросы - задавайте.

Буду премного благодарен за помощь!

Добавлено через 12 минут и 29 секунд
Еще маленькое дополнение.

Apache  у меня работает на две стороны: на локальную и на природу. Последний хост, который был добавлен, в DNS прописан только для интернета, а для локальной сети нет. И заметил что в одно и то же время с локального компьютера, который так же имеет доступ в мир, не открывается PHP страница - выдает сброс соединения, но HTML открывает, а с компьютера, который к локальной сети никакого отношения не имеет страница открывается без проблем и PHP и HTML.

Для локального компьютера задан DNS сервера, для другого компьютера заданы DNS провайдера. Но думаю проблема не в DNS кроется.
PM MAIL   Вверх
iAnthony
Дата 8.3.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



И еще добавление, Сафари говорит "The error was: “unknown error” (kCFErrorDomainWinSock:10054)"
PM MAIL   Вверх
DSsupport
Дата 10.3.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.3.2009

Репутация: 5
Всего: 5



nslookup обоих виртуальных хостов на сервере проходит без ошибок? С машин локальной сети и внешки DNS корректно резолвит домен в IP?
пример:
Код

Пуск > выполнить > cmd > ok
nslookup vhost1.com
]

Интересно было бы посмотреть на error лог апача и часть конфига с описанием виртуальных хостов.
PM MAIL WWW ICQ GTalk Jabber   Вверх
iAnthony
Дата 12.3.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



nslookup проходит без ошибок. Что-то не так было с настройками, в итоге я удалил NameVirtualHost для локальной сети, удалил из DNS все записи для локальной сети и оставил только для интернета, после перезапуска Apache все ошибки исчезли и все заработало как ни в чем не бывало.

Хотя это конечно не решение проблемы.
PM MAIL   Вверх
iAnthony
Дата 12.3.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



В логах нашел такие вот ошибки для всех виртуальных хостов:

VirtualHost <такой-то>:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
PM MAIL   Вверх
DSsupport
Дата 12.3.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.3.2009

Репутация: 5
Всего: 5



То, что проблема в настройках - это понятно. 
К сожалению, помочь Вам невидя конфигурационных файлов. 

Могли бы Вы выложить конфиг Апача, в часности настройки обоих виртуальных хостов?

В ошибке сказано что проблема с указанием портов для виртуальных хостов.

Это сообщение отредактировал(а) DSsupport - 12.3.2009, 22:43
PM MAIL WWW ICQ GTalk Jabber   Вверх
iAnthony
Дата 13.3.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



Могу выложить конфиг, только немного видоизменю названия.

Конфиг виртуальных хостов у меня в отдельном файле:
NameVirtualHost xxx.xxx.xxx.xxx # IP для мира
NameVirtualHost 192.168.1.1 # IP для локальной сети

<VirtualHost _default_:80> # это сделал на случай если зона делегирована, а хоста нет соответствующего. Но почему-то не работает такая фишка, и в случае если нет хоста, открывается первый из объявленных ранее.
    DocumentRoot "S:/default/Web"

    <Directory "S:/default/Web">
        AllowOverride All
    </Directory>

    ErrorLog "S:/default/Logs/Errors & Warnings.log"
    #CustomLog S:/default/Logs/Access.log combined
</VirtualHost>


Include "S:/Configuration/VirtualHosts/example.ru/main.conf" # это файлики, содержащие описание конкретных хостов
Include "S:/Configuration/VirtualHosts/example2.ru/main.conf"
... и т.д. для каждого свой

Файл с описанием хоста:
<VirtualHost "example.ru:80">
    ServerAdmin "[email protected]"
    ServerName "example.ru"
    ServerAlias "www.example.ru"

    DocumentRoot "S:/example.ru/Web"

    <Directory "S:/example.ru/Web">
        AllowOverride All
    </Directory>

    ErrorLog "S:/example.ru/Logs/Errors & Warnings.log"
    CustomLog "S:/example.ru/Logs/Access.log" common

    php_admin_value open_basedir "S:/example.ru/Web"
</VirtualHost>


Сейчас еще в логах нашел PHP Fatal error:  Maximum execution time of 60 seconds exceeded in "..........". Думаю, что это и есть причина того что определенный хост падает временами, но странно что с другого компьютера он остается доступен и работает без каких либо проблем.


Раз уж про конфиги заговорили, вопросик есть. А возможно ли хранить виртуальные хосты в MySQL? Но главное чтобы для каждого виртуального хоста была возможно задать данные по каким-либо параметрам, просто в сети встречал модуль для MySQL, но в нем можно задать только ServerAlias, ServerName и DocumentRoot - этого не достаточно.

Добавлено через 4 минуты и 30 секунд
...В ошибке сказано что проблема с указанием портов для виртуальных хостов.
Вроде эта проблема разрешилась после того как прописал порт в NameVirtualHost, т.е. стало так NameVirtualHost xxx.xxx.xxx.xxx:80, и для локального адреса соответственно так же.
PM MAIL   Вверх
DSsupport
Дата 13.3.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.3.2009

Репутация: 5
Всего: 5



NameVirtualHost должен быть один, иначе apachectl -t будет выдавать ошибку(которая, так же, должна быть и в логе.), что указано 2-е и более директив NameVirtualHost. Значение для NameVirtualHost берут из названия уже имеющихся виртуальных хостов. В Вашем случае целесообразно выбрать из _default_:80 или example.ru:80.

Дефолтный виртуальных хост должен стоять выше всех виртуальных хостов в конфиге, тогда он будет открыватся в случае отсутсвия виртуального хоста.

После настройки виртуальных хостов, Вам необходимо обратить внимание на ограничения в использовании PHP, в часности на работу директивы   php_admin_value open_basedir, скорей всего это именно она портит Вам жизнь.(Руководство по PHP)

Пример подключения модулья для хранения виртуальных хостов в mysql довольно хорошо описан здесь: http://www.lissyara.su/?id=1140
В примере указаны только основные директивы. При необходимости, Вы можете хранить в базе все что Вам необходимо.

Из использования apache_vhosts+mysql:
Плюсы:
- не надо перегружать апач, после внесения изменений в виртуальные хосты или добавлении нового.
Минусы:
- Прожорливый модуль, на 6000 хостов примерно 250 мег оперативной памяти, при этом если то же кол-во хостов загружать через файл http.conf то составит около 4-х мегов.
(источник)
PM MAIL WWW ICQ GTalk Jabber   Вверх
iAnthony
Дата 13.3.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



Поэксперементировал и вот что узнал:
Эти таймауты происходят почему-то только для одного компьютера. С других все работает и никаких ошибок. Так до сих пор и не понял причины такой реакции Apache.

Добавлено через 7 минут и 9 секунд
Так, второй NameVirtualHost убрал из конфига.

Значение для NameVirtualHost берут из названия уже имеющихся виртуальных хостов. В Вашем случае целесообразно выбрать из _default_:80 или example.ru:80.

А если задан главный хост (в смысле не виртуальный, а основной), то он будет выбираться как дефолтный?
PM MAIL   Вверх
DSsupport
Дата 13.3.2009, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.3.2009

Репутация: 5
Всего: 5



Компьютер имеет стабильное соединение  с сетью, большие пакеты передаются без проблем(ping -s 1500 example.ru)?
Что в лог файлах апача в момент таймаута?
PM MAIL WWW ICQ GTalk Jabber   Вверх
iAnthony
Дата 13.3.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 19.1.2009
Где: Moscow

Репутация: нет
Всего: нет



Заметил странную вещь:
Fri Mar 13 11:11:03 2009] [error] [client 192.168.0.2] PHP Fatal error:  Maximum execution time of 60 seconds exceeded in "...."

Т.е. говорит, что ошибка в PHP файле, которой на деле нет, и при загрузки этой страницы с других компьютеров все открывается правильно. Но вот что еще более странно! Я убрал из DNS все что связано с локальным адресом, и соответственно из Apache. Т.е. по хорошему должно все работать через интернет, а не через локальную сеть, но вот почему в логе тогда адрес локальный? Откуда его взял браузер? nslookup выдает только адрес интернет. Т.е. и взять-то этот адрес локальный не откуда.

А теперь еще поподробнее о том как все устроено, может я что упустил:

У меня есть один компьютер - сервер, и несколько локальных.
Сервер подключен к двум сетям, к локальной и к интернету через выделенную сеть.
Остальные подключены к wi-fi access point, которая в свою очередь подключена к другому интернету по ADSL.

И так. На серверном компьютере установлена виртуальная машина с Windows Server 2003, которую я пускаю по выделенному каналу и другой второй адаптер настроен на локалку. Хостовая система выделенный канал не использует и подключается как все по wi-fi.
При таком подключении я могу открывать страницы сервера как по локальному адресу, так и через интернет. Так во всяком случае я планировал, чтобы трафик лишний не гонять. Но потом прописав в DNS локальный адрес, который потом пошел по остальным DNS вне локалки, понял, что затея не очень хорошая и надо для этого отдельный DNS для локальной сети, поэтому вернул все на место, но вот серверный компьютер так до сих пор как я понимаю по локальной сети и подключается к серверу, а не через интернет.

Ух наверное лучше по этой организации сети картинку нарисовать, чтобы представлять ее нагляднее.

Добавлено через 2 минуты и 28 секунд
Забыл сказать, пинг проходит нормально с большими пакетами, ping example.ru -l 1500.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.1170 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.