Доброго всем времени суток! В последнее время на сайте заметно прибавилось пользователей и появился такой глюк - иногда не удается подключиться к SQL Server 2000. Кусок скрипта (самописный класс), где происходит ошибка: Код (Text): $this->dbc=mssql_connect($server, $user, $password); if(!$this->dbc) return false; в логах Апача пишется следующее: Код (Text): [Thu Feb 21 20:50:58 2008] [error] [client 82.200.***.***] PHP Warning: mssql_connect() [<a href='function.mssql-connect'>function.mssql-connect</a>]: Unable to connect to server: ****** in ******.php on line 22 При обновлении страницы иногда подключается, иногда опять вываливается. Конфигурация сервера: Windows 2000 + Apache 2 + PHP 5. Загрузка процессора в пике - не более 70%, ОЗУ - не более 50%. Еще на этом сервере живет самописный сервис, тоже работающий с SQL (через ADO) - у него никаких проблем с подключением нет. Из локальной сети на проблемы с подключением к этой же БД никто не жалуется. SQL Server 2000 (SP4) стоит на отдельном сервере, соединен с веб-сервером гигабитной сетью. Сетевушки проверялись/менялись. Загрузка процессора в пике - не более 90%, ОЗУ - не более 70%. Подключение к серверу по TCP/IP (именованные каналы отключены, но пробовал включать - без результата). Что уже пробовал: 1) Заменил ntwdblib.dll в комплекте PHP на новую версию (правда, этот баг больше касается MSSQL2005) 2) SQL Server перенесен на более производительный сервер. 3) пробовал заменить mssql_connect на mssql_pconnect 4) пробовал подключаться как по IP с указанием порта, так и по имени сервера. Пинг/телнет работает нормально. От проблемы избавиться не удалось - бывают какие-то "всплески" (не связанные с загрузкой процессоров и оперативки компьютера), когда 1-2 минуты в логах подряд ошибки подключения... Иногда - и по 30 минут. С чем это может быть связано? Затыкается локалка - вряд ли, т.к. проблемы с подключением только у PHP. Кстати, раньше Apache и SQL работали на одной машине, проблемы с подключением за год работы не было ни разу.
Наблюдали аналогичную неуловимую проблему где то полгода назад, за то время, пока веб-сервер стоял под виндой - 2000 AS сначала, потом 2003 - такие же неуловимые всплески ошибок соединения, но с Ораклом. Тоже много чего перепробовали... В результате после переноса веб-сервера на никсы проблема испарилась... обьяснения внятного даже для себя тоже так и не нашли
я уже думал об этом, но тогда придется переписывать и сервис, что довольно проблемно - он работат с bcp для выгрузки данных, или переносить его на севрер с SQL. спасибо, попытаю счастья на php.net, может это баг в модуле php_mssql....
Теме UP поддержка PHP молчит как партизан на допросе. http://bugs.php.net/bug.php?id=44300 переписал все на ADO (обращаюсь к нем через СОМ). Неделю все проработало идеально. Сейчас (уже в течение 3 часов) - дикие тормоза при обращении к БД (причем сервера не загружены вообще!). Через Query Analyser запрос выполняется за 0.01 с. При вызове из скрипта ему не хватает 5 минут для завершения (еще вчера страница формировалась за 1.6-2 с)! Самые элементарные запросы выполняются по 2-3 секунды (именно сами запросы, стоят раздельные счетчики на работу скрипта и выполнение запроса). Апач рестартил, эффекта никакого. Пробую тот же самый запрос выполнить через mssql_* - выполняется хоть и не так быстро, как обычно, но в пределах разумного. DoS можно сразу исключить, никакой "левой" активности нет. Сеть можно тоже исключить - запускаю на веб-сервере программу на Дельфи, работающую через ADO с базой - летает...
Alfa7 А с dns'ами никаких проблем нету? Мысль какая - есть тормоза. Сеть не виновата (да и не нагрузишь её так, чтобы получилось то, что ты описываешь). Сервер - не виноват. А вот если dns не ресолвица - например, куда-то не туда лезет и не получает ответа - тогда да. Именно такая картина и будет. Зоны все нормально прописаны? Обратная нормально прописана? Обращение к mysql-серверу по dns-имени идёт? А nslookup про имя сервера что говорит?
пробовал подключаться и по IP - никакой разницы. Кроме того, другие-то программы отлично работают. подключение как раз происходит (через АДО), зато потом на MSSQL долго висят процессы Апача с "Awaiting command"
Подниму тему. Скрипт периодически апдейтит пару таблиц. Иногда возникает ошибка подключения к mssql. после перезагрузки винды с апачем все работает.