За последние 24 часа нас посетили 17437 программистов и 1711 роботов. Сейчас ищет 1641 программист ...

Периодически не удается подключиться к SQLServer 2000

Тема в разделе "MSSQL", создана пользователем Alfa7, 24 фев 2008.

  1. Alfa7

    Alfa7 Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    Доброго всем времени суток!

    В последнее время на сайте заметно прибавилось пользователей и появился такой глюк - иногда не удается подключиться к SQL Server 2000.

    Кусок скрипта (самописный класс), где происходит ошибка:
    Код (Text):
    1.  
    2. $this->dbc=mssql_connect($server, $user, $password);
    3. if(!$this->dbc) return false;
    в логах Апача пишется следующее:
    Код (Text):
    1.  
    2. [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 работали на одной машине, проблемы с подключением за год работы не было ни разу.
     
  2. Anonymous

    Anonymous Guest

    Наблюдали аналогичную неуловимую проблему где то полгода назад, за то время, пока веб-сервер стоял под виндой - 2000 AS сначала, потом 2003 - такие же неуловимые всплески ошибок соединения, но с Ораклом. Тоже много чего перепробовали... В результате после переноса веб-сервера на никсы проблема испарилась... обьяснения внятного даже для себя тоже так и не нашли :(
     
  3. Alfa7

    Alfa7 Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    я уже думал об этом, но тогда придется переписывать и сервис, что довольно проблемно - он работат с bcp для выгрузки данных, или переносить его на севрер с SQL.
    спасибо, попытаю счастья на php.net, может это баг в модуле php_mssql....
     
  4. Alfa7

    Alfa7 Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    Теме 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 с базой - летает...
     
  5. Anonymous

    Anonymous Guest

    Хм.. держите в курсе, если не сложно :)
     
  6. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Alfa7
    А с dns'ами никаких проблем нету?
    Мысль какая - есть тормоза. Сеть не виновата (да и не нагрузишь её так, чтобы получилось то, что ты описываешь). Сервер - не виноват. А вот если dns не ресолвица - например, куда-то не туда лезет и не получает ответа - тогда да. Именно такая картина и будет.
    Зоны все нормально прописаны? Обратная нормально прописана? Обращение к mysql-серверу по dns-имени идёт? А nslookup про имя сервера что говорит?
     
  7. Alfa7

    Alfa7 Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    4
    Симпатии:
    0
    пробовал подключаться и по IP - никакой разницы. Кроме того, другие-то программы отлично работают.
    подключение как раз происходит (через АДО), зато потом на MSSQL долго висят процессы Апача с "Awaiting command"
     
  8. fake

    fake Активный пользователь

    С нами с:
    12 апр 2010
    Сообщения:
    1
    Симпатии:
    0
    Подниму тему. Скрипт периодически апдейтит пару таблиц. Иногда возникает ошибка подключения к mssql. после перезагрузки винды с апачем все работает.
     
  9. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Встречный вопрос.
    Apache+PHP крурятся на отдельном от MsSql сервере?