В эти дни аппаратные средства являются довольно мощными и дешевыми, таким образом, можно иметь большое значение только при помощи достойного сервера. Если, как Вы говорите, Ваша база данных главным образом для чтения, то Poweredge 2950 с 16 ГБ RAM и шести 15K дисков RAID5 (или 6) является очень мощной основой для SQL Server; добавьте столько ядер, сколько Вы хотите, но даже ядра четверки проводов с парной скруткой не являются настолько дорогими. Я думаю, что эти 2950 возьмут до 64 ГБ RAM, хотя это будет дорого!
Ваши аппаратные средства могут уже быть этим мощным. Раз так Вы смотрите на ступенчатое изменение в питании и стоимости, и раз так я думаю, что Вам нужен лучший совет, чем всего несколько сообщений на ServerFault :-)
МЛАДШИЙ
MySql работает? И PHP правильно установлен соединиться с ним в своем конфигурационном файле (/etc/php.ini)?
Я в основном собираюсь бессмысленно повторить хорошие идеи, уже отправленные, но я хочу, чтобы Вы попробовали несколько вещей в порядке в надежде на определение местоположения определенного преступника.
Ваш код является звуковым, так попытайтесь протестировать это в частях, таким образом, можно вычеркнуть то, что на самом деле работает. Необходимо найти, что и 127.0.0.1 и localhost прекрасны в примере выше. И это нечетно, что Ваши журналы ошибок говорят Вам, что это не может найти/var/run/mysql/mysql.sock начиная с Ваших ссылок конфигурации/tmp/mysql.sock (Вы попытались установить mysql по установке ОС по умолчанию?).
Проверьте, что можно на самом деле соединиться с mysql из командной строки (все, что я собираюсь предложить, спорно, если у Вас нет ssh),
Выполните свой код php из Вашей командной строки. Вам будет нужен php cli. Вот установка:
вкусная установка php-cli (Redhat)
склонный - получают установку php5-cli (Debian)
Сообщите нам, успешны ли или или оба из этих тестов.
MySQL открыл сокет в/tmp/mysqld.sock, но PHP ищет сокет/var/run/mysql/mysql.sock.
Или необходимо заставить PHP смотреть в/tmp/mysql.sock или заставлять MySQL создавать сокет в/var/run/mysql/mysql/sock - как предложено Kedare.
Изменение PHP было бы менее разрушительным. Ваш конфигурационный файл имеет две записи:
mysql.default_socket =
Измените оба из них (только один будет в действительности, но я не знаю который) к:
mysql.default_socket = /tmp/mysql.sock
MySQL является немного странным: для клиентов MySQL "localhost" означает, используют сокет Домена UNIX для базы данных.
У меня есть чувство, что фиксация этой части только возвратит Вас Вашей исходной проблеме:
Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Это походит на несовместимость между версиями клиента и сервера. Вы пользуетесь 3,23 библиотеками, чтобы говорить с 5,1 серверами?