У меня около 150 заданий cron, выполняющих этот процесс от 6 до 10 вставок каждые 3 секунды. Каждые 3 секунды происходит МНОГО операторов select.
Моя проблема в том, что какое-то время все работает очень хорошо, а затем начинает портиться и, кажется, просто не отвечает. У меня 16 ГБ памяти, используется только 20%, а загрузка ЦП в среднем составляет около 2,0. Это заставляет меня думать, что у меня есть несколько вариантов, которые я могу где-то настроить.
Я пытался возиться с файловыми дескрипторами на другом моем компьютере dedi, но в конечном итоге по какой-то причине потерял root-доступ, поэтому хочу сделать это снова, только если кто-то может указать мне на ОЧЕНЬ хорошее руководство.
MySQL Opened_tables составляет 15,6 миллиона (это много?)
Я просто хотел бы получить несколько общих советов по настройкам, которые я должен настраивать, и о том, что я должен делать, чтобы сервер работал нормально. Очевидно, у меня есть доступные ресурсы, но я предполагаю, что MySQL / Apache в некотором роде ограничены.
Спецификация сервера: Linux CentOS 5 с Plesk 9.5.4 и MySQL 5.0.
Я заранее ценю любую помощь.
Что я могу вам порекомендовать, так это использовать Тюнер MySQL. Этот сценарий Perl дает вам множество рекомендаций о том, какие переменные конфигурации вы можете установить или изменить. Не зная вашей точной статистики, я, вероятно, не смогу дать вам лучшего ответа.
Я рекомендую вам также посмотреть на веб-сайте MySQL каждую переменную. MySQLtuner рекомендует вам, что именно он делает. Затем вы узнаете о многих новых переменных, которые вы можете установить. Кроме того, вы должны запустить этот инструмент примерно через 48 часов после первого изменения переменных. Часто вы получаете еще несколько (более качественных) рекомендаций.
Вы используете больше таблиц innodb или myisam? Возможно ли обновление до MySQL 5.5?
ОБНОВЛЕНИЕ: Относительно вашего вопроса о хороших учебниках. Я настоятельно рекомендую вам прочитать Блог о производительности MySQL. Есть действительно много хороших статей (на одну я уже ссылался).
Я нахожу Учебник по настройке MySQL сценарий (первый элемент на странице), чтобы быть более полезным, чем ранее упомянутый сценарий MySQL Tuner.
Предполагая, что с любым из сценариев все работает нормально, искали ли вы возможность оптимизации ваших запросов с помощью функции EXPLAIN?
Как уже упоминалось, InnoDB предлагает блокировку на уровне строк вместо блокировки таблицы MyISAM. Хотя скорость InnoDB значительно улучшена в MySQL 5.5, на самом деле любая версия 5.x должна обеспечивать это увеличение.
Функция ЗАГРУЗКИ ДАННЫХ INFILE выполняется намного быстрее, чем вставка. Если есть возможность пойти по этому пути, сделайте это. Если в ваших таблицах много индексов, убедитесь, что ваш key_buffer_size достаточно велик. Если вы используете только 20% своей оперативной памяти и это выделенный сервер MySQL, вы, безусловно, можете улучшить свою общую конфигурацию для повышения производительности.
Помните, что таблицы myisam заблокированы во время вставки или обновления, поэтому запросы выбора будут ждать.
Вы можете ускорить вставки с опцией одновременных вставок, но не ждите чуда. http://dev.mysql.com/doc/refman/5.0/en/concurrent-inserts.html
Я бы сказал, что переход на 5.5.x и InnoDB был бы разумным шагом ...