|
|
|
| Уже несколько дней при попытке открыть свой сайт получаю чистую страницу с сообщением:
================
Warning: mysql_connect() [function.mysql-connect]: Can't initialize character set cp1251 (path: /usr/local/share/mysql/charsets/) in /home/.../data/public_html/config.php on line 33
В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.
================
config.php у меня существует только для обслуживания счетчика, а строка 33 содержит следующую запись:
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
|
После нескольких попыток сайт открывается, хотя я не предпринимал никаких действий с настройками VDS, на котором он установлен, и даже не перезагружал его.
Обращение к техподдержке дало такой результат:
"Судя по логам mysql это происходит из-за слишком большого количества открытых файлов."
По тарифу допускается 512 одновременно открытых файлов.
Что посоветуете? | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 11:55)
| | Хм...
А что за файлы? Запущенные скрипты? Или что? | |
|
|
|
|
|
|
|
для: ddhvvn
(28.07.2007 в 11:58)
| | Содержимое строки 33 приведено в сообщении. Посмотрите чуть выше. | |
|
|
|
|
|
|
|
для: ddhvvn
(28.07.2007 в 11:58)
| | Дык, кабы знать...
Из скриптов только счетчик. Остальное - статика. | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 11:55)
| | В смысле открытых MySQL-ем файлов? Вам доступно редактирование my.ini? Что сейчас в нём находится? | |
|
|
|
|
|
|
|
для: cheops
(28.07.2007 в 12:46)
| | На сайте только статические страницы, из скриптов - только счетчик. Средняя загрузка процессора еще ни разу не поднималась выше 0.25%.
"В смысле открытых MySQL-ем файлов?" - Не знаю, что сказать. Ответ процитировал, а большего не знаю.
"Вам доступно редактирование my.ini" - доступен его аналог my.cnf
Вот что в нем:
# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/db/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
|
| |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 13:48)
| | Не густо... :) | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 13:48)
| | Сколько вам памяти доступно? Значение key_buffer в любом случае следует увеличить - тогда MySQL не будет сбрасывать всё во временные таблицы на жёстком диске (и соответственно файлы не будет держать открытыми). Поставьте вместо 16Кб где нибудь 16М, если в памяти не ограничены, то 64М, а то и выше. | |
|
|
|
|
|
|
|
для: cheops
(28.07.2007 в 14:23)
| | Памяти у меня гарантированно 96 Мб (а потенциально возможно при наличии ресурса, но не гарантировано 288Мб - на эту цифру я не ориентируюсь, словно нет её - верно?).
Поставить 16М? | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 14:31)
| | 96Мб на процесс? В любом случае 16 Мб должно хватить на большинство запросов и количество открытых файлов должно снизиться. | |
|
|
|
|
|
|
|
для: cheops
(28.07.2007 в 14:42)
| | В аккаунте читаю:
Информация о системе:
- Процессор Virtual CPU 105 MHZ
- Оперативная память 96 Мб.
- Файл подкачки (swap) 191 Мбайт
- количество запущенных процессов - 22
Может, key_buffer сделать больше, 32М, например? | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 14:49)
| | Можно, в любом случае 16 Кб цифра не адекватная для MySQL - у меня даже на локальной машине это значение 128Мб. | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 13:48)
| | Можете также ограничить количество открытых файлов при помощи директивы open-files-limit
| |
|
|
|
|
|
|
|
для: cheops
(28.07.2007 в 14:44)
| | Прямо вот так вписать эту строку в my.cnf?
То есть одновременно и буфер увеличить, и установить ограничение на открытые файлы?
Тогда будет чуть притормаживать, но не сбоить, верно? | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 14:51)
| | >Прямо вот так вписать эту строку в my.cnf?
Да, в секции [mysqld], после любых изменений конфигурационного файла необходимо перегрузить MySQL-сервер.
Ограничение ничего нового не даст, но по крайне мере у вас останется запас дескрипторов, если например потребуется открыть файл средствами PHP (для тех же сессий). Увеличение размера буфера в принципе должно решить проблему. | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 11:55)
| | По первому впечатлению, проблема исчезла. Но для окончательного вывода все же нужна статистика.
Зато совершенно очевидно другое - быстродействие VDS вцелом стало просто фантастическим! Щелк - и готово, страница открылась! В том числе и форум рнрнвв, который до того изрядно тормозил!
Спасибо Вам, Хеопс!
БОЛЬШОЕ спасибо! | |
|
|
|
|
|
|
|
для: Владимир55
(28.07.2007 в 15:08)
| | Хм... если база форума (счётчика) разрастётся, то имеет смысл также увеличить размер других буферов
sort_buffer_size = 8M
read_buffer_size = 8M
join_buffer_size = 8М
|
| |
|
|
|
|
|
|
|
для: cheops
(28.07.2007 в 15:16)
| | Спасибо, тоже взял на вооружение! | |
|
|
|