Титла: Mysql problem with socket Публикувано от: rat в Mar 31, 2006, 17:16 Здравейте,
Имам следния проблем с mysql : 1.Имам една машина на която вървят Apache , Mysql , PHP. Натоварването на машината е доста сериозно (от 50 нагоре) По някое време скриптовете не могат да се свържат през сокета към mysql като гърми с грешка :
Това означава "Resource temporary unavailable".(perror 11) Сислно се съмнявам че свършват файловите дискриптори. Ако се вържа към mysql през конзолта всичко си е наред но мисля че тогава не се позлва сокет а пайп. Тоест Mysql не е умрял. Та как мога да увелича броя на файловите дескриптори? Ето малко статистика :
Титла: Mysql problem with socket Публикувано от: astronom в Mar 31, 2006, 17:47
Файл гнездо (socket file) и именован канал (named pipe) са едно и също. Файлът mysql.sock е Unix Domain Socket. Този файл е просто един именован канал. Няма разлика. Титла: Mysql problem with socket Публикувано от: rat в Mar 31, 2006, 17:53 Тогава вече нямам логично обяснение за случващото се ....
По принцип сървъра не умира. Просто скриптовете не мога да се свъжат през сокета. При по-малко натоварване на системата няма проблем. Титла: Mysql problem with socket Публикувано от: в Mar 31, 2006, 19:08 Мисля че има ограничение за броя на отворените файловете (вкл. и sockets) и май е 024 на процес за линукс ( а може и да е 4096 ). Не съм сигурен, че може да се променя динамично.
Титла: Mysql problem with socket Публикувано от: Hapkoc в Apr 01, 2006, 12:58 rpetrov, съвсем прав си.
# ulimit -n при мен връща 1024 и няма начин да се променя динамично. rat, погледни това: http://www.ussg.iu.edu/hypermail/linux/kernel/9701.0/0063.html Титла: Mysql problem with socket Публикувано от: acidburn в Apr 01, 2006, 13:39 преди време работих в 1 хостинг компания. там се получаваше подобен проблем...
с командата W нали се сещаш там излиза натоварването в някаква странна единица ![]() същото беше се получило и с 1 рутер... като погледнеш с топ статистиките само 25% цпу се позлваше, но като видиш с "w" беше над 10 и имаше загуби в рутирането на пакетите. ще пастенеш ли "w" какво ти казва? според мен ако е над 10 значи просто сървъра не издържа и ще трябва да ъпгрейднеш ![]() Титла: Mysql problem with socket Публикувано от: rat в Apr 02, 2006, 14:24
Връща същото което връща и top . По-горе съм написал че натоварването в тази "странна" единица е над 50 (стигал съм до 126). Със сигурност сървърът не издържа... Наркос: Мерси за пача, но аз не се наемам да го правя ![]() ![]() Ще видим какво са измислили и админите ... Титла: Mysql problem with socket Публикувано от: в Apr 03, 2006, 12:50 Относно броя на отворените файлове:
Има едни пра-стари функции fopen и т.н. Те изполват една структура FILE, в която номера на файла се записва в поле от тип char. На ОС, на които това е така, се получава и едно ограничение от 256 отворени FILE-ове на процес. rat сигурен ли си, че имаш твърде много връзки към базата ( netstat -x ... ) ? Титла: Mysql problem with socket Публикувано от: hary в Apr 06, 2006, 13:08 до колкото знам натоварването което се вижда с командата w , а и с другите команди vmstat top "load average" се тълкува така:
брой процеси които чакат за процесорно време Явно при теб mysql-a не смогва и апачето чака много за заявки от което ти се вдига лоада. Това че в грешката пише че не може да се свърже по сокет, не значи непременно че проблема е в сокета. Най-вероятно просто си стигнал max разрешени конекции. Т.е. докато се чака изпълнението на някаква заявка апачето продължава да отваря конекции къмм mysql-a докато не стигне мах. Според мен трябва да оптимизираш настройките на mysql , като му дадеш повечко памет ( е ако нямаш , ще трябва да сложиш).Пример.Обърни внимание най-вече на: set-variable = key_buffer=196M set-variable = myisam_sort_buffer_size=64M set-variable = sort_buffer=1M set-variable = record_buffer=1M set-variable = thread_cache=8 Давай повечко памет, но все пак се съобразявай с наличната за да не нагазиш в суапа ![]() Твърде е възможно също проблема да идва от калпава SQL заявка или неиндексирана таблица, затова погледни с mysqladmin -p processlist , анализирай и виж коя е проблемната заявка или таблица. Това е от мене ![]() |