![]() |
|
![]() ![]() ![]() |
|
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 кроется. |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 19.1.2009 Где: Moscow Репутация: нет Всего: нет |
И еще добавление, Сафари говорит "The error was: “unknown error” (kCFErrorDomainWinSock:10054)"
|
|||
|
||||
DSsupport |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.3.2009 Репутация: 5 Всего: 5 |
nslookup обоих виртуальных хостов на сервере проходит без ошибок? С машин локальной сети и внешки DNS корректно резолвит домен в IP?
пример:
Интересно было бы посмотреть на error лог апача и часть конфига с описанием виртуальных хостов. |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 19.1.2009 Где: Moscow Репутация: нет Всего: нет |
nslookup проходит без ошибок. Что-то не так было с настройками, в итоге я удалил NameVirtualHost для локальной сети, удалил из DNS все записи для локальной сети и оставил только для интернета, после перезапуска Apache все ошибки исчезли и все заработало как ни в чем не бывало.
Хотя это конечно не решение проблемы. |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 19.1.2009 Где: Moscow Репутация: нет Всего: нет |
В логах нашел такие вот ошибки для всех виртуальных хостов:
VirtualHost <такой-то>:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results |
|||
|
||||
DSsupport |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.3.2009 Репутация: 5 Всего: 5 |
То, что проблема в настройках - это понятно.
К сожалению, помочь Вам невидя конфигурационных файлов. Могли бы Вы выложить конфиг Апача, в часности настройки обоих виртуальных хостов? В ошибке сказано что проблема с указанием портов для виртуальных хостов. Это сообщение отредактировал(а) DSsupport - 12.3.2009, 22:43 |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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, и для локального адреса соответственно так же. |
|||
|
||||
DSsupport |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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-х мегов. (источник) |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 19.1.2009 Где: Moscow Репутация: нет Всего: нет |
Поэксперементировал и вот что узнал:
Эти таймауты происходят почему-то только для одного компьютера. С других все работает и никаких ошибок. Так до сих пор и не понял причины такой реакции Apache. Добавлено через 7 минут и 9 секунд Так, второй NameVirtualHost убрал из конфига. > Значение для NameVirtualHost берут из названия уже имеющихся виртуальных хостов. В Вашем случае целесообразно выбрать из _default_:80 или example.ru:80. А если задан главный хост (в смысле не виртуальный, а основной), то он будет выбираться как дефолтный? |
|||
|
||||
DSsupport |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 5.3.2009 Репутация: 5 Всего: 5 |
Компьютер имеет стабильное соединение с сетью, большие пакеты передаются без проблем(ping -s 1500 example.ru)?
Что в лог файлах апача в момент таймаута? |
|||
|
||||
iAnthony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |