Есть 2 сервера: 1) nginx+apache+php Xeon® CPU E5504 2.00GHz/12GB mem/500GB SATA 2) mysql Xeon® CPU E5504 2.00GHz/4GB mem/150GB SCSI
Периодически при обновлении товаров через /bitrix/admin/1c_exchange.php apache съедает все 12GB памяти mysql база не большая: ~700MB. Всё в innodb. Я так понимаю проблема в блокировках mysql при обновлении товара? Подскажите куда смотреть/что подкрутить.
Николай Рыжонин Если не ошибаюсь, то в праймтайм там нагрузка на apache в среднем 7-8 запросов в секунду, так что max servers пока думаю оставить как есть. Про память я уже предлагал им, наверно все же в машинку с мускулем излишки лучьше поставить.
Николай Рыжонин Там апача стартовых 5 процессов, и на каждого сверх старта он рожает еще. Допустим сейчас там их 12. Пока DBPersistent сегодня трогать не буду - хочу посмотреть полный денек как работать будет, но а если все хорошо будет - попробую. Все таки за max_connections немного опасаюсь - когда привышение будет, наверно не будет переконнектов, будут просто отлупы. Denis Sharomov Я не клиент, скорее всего клиент человек, чей сервер мы администрируем.
В общем поставил: define("DBPersistent", false); max_connections=30 Нагрузка сейчас похоже не пиковая, но после тестов вида: ab -n 1000000 -c 50 http://xxx.ru/ и получаса наблюдений вроде ни одной 504 не видно. Хотя на базу похоже этот тест никак не влияет. После манипуляций почти до 0 упали "MySQL slow queries" и "MySQL threads". У кого нибуть есть идеи как потестить _полноценно_?
Николай Рыжонинmax_connections - вот я о том и говорю, по идее по привышении то уж точно ошибки сыпаться будут или там как то реализовано повторные запросы отправлять?
Может я что-то не понимаю но почему если все запросы должны отправляться по 1 соединению я вижу под 200 коннектов в "netstat -anp | grep 3306 | grep ESTABLISHED | wc -l" + если InnoDB осуществляется блокировка на уровне строки, а MyISAM на уровне таблицы нужно все же как то еще подумать о смене пола для таблиц Николай Рыжонин извиняюсь, 10-20 коннектов где поставить? Dmitry Valyanov define("DBPersistent", false); можно попробовать вечером поставить. Nik Semenov судя по коду он их будет прибивать, но будет ли переконнект? Или все будет просто отваливаться? Кстати вроде в mysql можно таймауты наподкрутить по этому поводу если я все правильно помню.
Есть сайт с приличной нагрузкой часть пользователей на котором отваливаются по 504 ошибке. nginx отдает статику, apache разруливает php. mysql крутится на другой машинке. Узкое место больше склоняюсь в mysql. Немного о той машинке: core duo, 8 gb ОЗУ Загрузки по процессору нет, la меньше 1. iowait в среднем 10% - вся база в память не лезет. mtop показывает кучу sleep'ов и есть запросы которые обрабатываются по/более 50 секунд судьба их дальше не известна. Примерная картина в mtop:
"mysql.allow_persistent = On" Off как то боязно пробовать. Смущает "Cache Hit: 99.93%" На графике оно вроде так же присутствует, но пропорции не 99%.
Мысли - что дело не в железе/нагрузке, а некорректной работе/недонастроенном bitrix'е Так как машинка досталась недавно в настройках php_interface/dbconn.php там: define("CACHED_b_iblock", false); define("DBPersistent", true); @ini_set("memory_limit", "96M"); Подскажите, куда копнуть, что подстроить. зы: машинка на Linux