- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый,
iotop показывает интересные штуки (centos 5.x)
Понятно что так не постоянно, иногда показывает 99% i/o на несколько секунд, обычный хостинг сервер , слегка нагружен, apache / sql / cpanel все как обычно вроде бы....
Уже тюнил журнал и.т.п как-то все равно ...... , обычно процесс подвисает на несколько секунд совместно с mysql+php+apache процессами от клиентов, изучал запросы в базу - х3 , вроде как все нормально, конечно не все там проиндексировано, но не на столько объемы там сложные .... что бы умирать..... при таких аномалиях LA может добегать до 600 ... при этом еще несколько гиг рамы свободно (не всегда, иногда своп задействован), и при этом в /tmp создается довольно приличное количество временных таблиц, которые собственно я так понимаю и сносят i/o винтам напрочь.... растолкуйте, крутил ввертед параметры по разным рекомендациям, никак не вышло стабилизировать.
доп. информацию выдам, скажите какую :) (кроме рутового пароля :D )
Спасибо,
Временные таблички перенесите на tmpfs. Также проверьте логи вебсервера и самой Mysql, если их много и они большего размера - отсюда может быть нагрузка. А так, покажите весь My.cnf
my.cnf выглядит вот так:
При этом логи веб сервера занимают около 500 MB , это те которые актуальны , естественно они ротируются.
MySQL ведет только error log, который весит около 2х метров :D
Вопрос про tmp таблицы актуален, машинка оснащена 32 гигами памяти.... почему временные таблицы выпадают на диск?
---------- Добавлено 06.02.2013 в 01:59 ----------
Перенес в shm временные таблицы, сервер конечно отпустило но понятно как бы почему, вопрос остается открытый, мне не ясно почему SQL пишет на диск если есть свободная память.... (с точки зрения временных таблиц). Винт у меня разбит на "/" и "/tmp", раньше писало в /tmp , отдельный раздел, меньше вопросов было, но со временем отрезанного (не LVM) под /tmp стало не хватать, перенесли в "/" этим собственно и добили. Сейчас в shm с меньшим i/o пишет конечно, но *****, почему не сразу в память? Какие буфера крутить ? куда? :)
Наиболее распространённые причины этого:
а) не хватает места отведенного директивами tmp_table_size и max_heap_table_size
б) в ваших основных таблицах имеются поля типа TEXT или BLOB, в результате все временные даные, которые являются результатом запросов на основные таблички пишутся на диск, а не в ОЗУ.
Перепроверьте, не включен ли часом binlog или что-то иное...
Судя по кол-ву памяти - размеры буферов у вас маловаты, да и вообще... Прежде чем что либо настраивать необходимо выяснить ряд моментов.
Прогоните Mysqltuner'ом, он подскажет основные моменты. Можете приложить сюда результат.
А так больше ничем помочь не могу, я не телепат :) Надо глядеть подробно...
Жестоки однако временные таблицы, смотрим график после переноса их на shm.
Наиболее распространённые причины этого:
а) не хватает места отведенного директивами tmp_table_size и max_heap_table_size
Тюнил и тут, причем от 100M до 3 GB и heap и table_size, пофик, результат тот же :D
б) в ваших основных таблицах имеются поля типа TEXT или BLOB, в результате все временные даные, которые являются результатом запросов на основные таблички пишутся на диск, а не в ОЗУ.
А как же в таких случаях выживают хостеры? :) Таблички то ясное дело что не мои :D
Перепроверьте, не включен ли часом binlog или что-то иное...
Нету.
Судя по кол-ву памяти - размеры буферов у вас маловаты, да и вообще... Прежде чем что либо настраивать необходимо выяснить ряд моментов.
Какие моменты? Какие буферы маловаты на ваш взгляд?
Прогоните Mysqltuner'ом, он подскажет основные моменты. Можете приложить сюда результат.
Треш это а не софт, гоняю им, результата нет , показывает почти одно и то же, по буферам я сейчас специально урезал, что бы не более 10GB памяти кушало, ибо в моменты когда оно все заедает с сервером работать весьма сложно, но обращая внимание на график который я привел выше, возможно станет полегче из за переноса таблиц в shm.
Для большей ясности надо было написать "для начала, прогоните тюнером". Разумеется этого недостаточно, он показывает лишь базовые моменты.
Все... и не только буферы. Я полагаю сайтов у вас много, баз и табличек в них тоже. Их объём, объём индексов, тип движка и т.п... Чтобы точно сказать что либо необходимо знать эту информацию.
Тюнил и тут, причем от 100M до 3 GB и heap и table_size, пофик, результат тот же
Как я написал выше, если не смотря на увеличение этих параметров таблички всё же попадают на диск, виной являются поля вышеперечисленных типов.
Для примера вазьмём высоконагруженный блог на вордпрес...
Хотя пишет, что объём временных таблиц уже слишком высок (256 мб), разместил на tmpfs и забыл об этом.
Обычно 256 мб хватает с головой, если же нет - тюнер это сообщит.
Без грамотной оптимизации не как.
Повторюсь, приложите пожалуйста сюда результат тюнера, поглядим чего у вас там, а то гадать можно до бесконечности.
Да без проблем, что он только даст , не совсем понимаю:
Фрагментация - фигова, согласен, проведу optimize. еще?
Uptime не велик , но и не полчаса... С кешом игрался, можно чуток увеличить, но все равно значение в районе нескольких миллионов. Так как вижу NO_CACHE или как-то там запросы про процессам. Общий объем баз 5 GB, сайтов не много, но они посещаемые... Я полагаю для такого сервера 200 сайтов это не много :D :D :D Понимаю что "считать сайтами" не верно, но реально из них есть 5 которые по 50k+ uniq в сутки, остальные блекло смотрятся на их фоне, типа 1-5k uniq и даже меньше есть.... Рядом есть такой же сервер с практически такими же настройками но там иначе, тяжеловесов нет, но зато сайтов 1000+ чувствует себя в 100 раз лучше )))) полагаю что таки проблемы с запросами (базой).....
Еще думаю, что может совокупность факторов играет роль, например пишутся временные таблицы, тут же рядом может бекап запустится.... а следом уже комом набираются процессы php которые попросту не завершаются. и так по кругу пока есть свободный ресурс..... сейчас буферы немного увеличу по этой формуле:
Что бы "Maximum possible memory usage:" было около 20 GB, я же понимаю это нормальным, для 32 гиг памяти.. ? остальные 13 останутся под все остальное, memory_limit и прочее в php есть, т.е выедать под ноль не должно.
Посмотрим как после этого пару суток вести себя будет ..... возможно перенос в shm решает вопрос в корне...хотя вы говорите что что-то настроили бы иначе... а точнее "Все..." , жду плотных комментариев :D
Ну как что, я вижу основные проблемы, используемые движки, а также размер прочих нужных вещей.
key_buffer_size = 1,7G
tmp_table_size = 256M
max_heap_table_size = 256M
query_cache_size = 512M
query_cache_limit = 64M
sort_buffer = 32M
join_buffer_size = 64M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 0
Опять же это лишь моменты касающиеся базовой оптимизации.
Пропишите сиё дело, а завтра днём опять дадите результат тюнера.
Ну как всё, практически. Для максимальной производительности одних лишь тюнеров недостаточно.
Смотрю хотите, чтобы всё сделали за вас. Наглость второе счастье, да? :)
Я направил вас в нужное русло, изучайте вопрос самостоятельно, если хотите в будущем не создавать подобных тем.
Если же, по какой-то причине у вас это не получается, наймите администратора.
Ну как что, я вижу основные проблемы, используемые движки, а также размер прочих нужных вещей.
key_buffer_size = 1,7G
Согласен, его подбираем по размеру общему индексов, это значение так же уже было в фазе 2 и 3 GB, т.е с небольшим запасом.
tmp_table_size = 256M
max_heap_table_size = 256M
Сейчас стоит 200 M, что это дает? Кстати, установка этих переменных не влияет на размер создаваемых временных таблиц.....
sort_buffer = 32M
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_sort_buffer_size
Вот тут Пишут что: "On Linux, there are thresholds of 256KB and 2MB where larger values may significantly slow down memory allocation, so you should consider staying below one of those values."
Другими словами ставить "что попало" не имеет смысла, так как буфер будет выделяться даже в том случае если он не будет использован целиком. Почему взято значение 32 M ? поясните мне пожалуйста. Я понимаю, что документация не носит в себе настроек для всех и всяк, но хотелось бы кроме сухого ответа в виде 32M услышать ответ на вопрос "почему именно 32?"
query_cache_size = 512M
query_cache_limit = 64M
Допустим, но влияет ли это на формирование нагрузки? ;)
join_buffer_size = 64M
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html
Интересная наводка: "It is better to keep the global setting small and change to a larger setting only in sessions that are doing large joins. Memory allocation time can cause substantial performance drops if the global size is larger than needed by most queries that use it."
Т.е по факту рекомендовано в глобальных значениях держать "некий минимум", а для сессий с большими join применять другое значение. Почему вы выбираете 64M ?
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 0
Это для : "Data in InnoDB tables: 29M (Tables: 58)" ???? 😮
---------- Добавлено 06.02.2013 в 04:18 ----------
Смотрю хотите, чтобы всё сделали за вас. Наглость второе счастье, да?
Сделали за меня что? Вы о чем? Комменнтарии это когда человек рассказывает почему стоит выбрать данное значение , а не говорит что это "базовая оптимизация" :) Базовая для чего и для кого ? :)
Я направил вас в нужное русло, изучайте вопрос самостоятельно, если хотите в будущем не создавать подобных тем.
Я понял ваше настроение, спасибо что уделили время, приму ваши советы к сведению.
Если же, по какой-то причине у вас это не получается, наймите администратора.
Обязательно подумаю на эту тему.
---------- Добавлено 06.02.2013 в 04:25 ----------
Кстати, при применении ваших настроек, результат mysqltuner выглядит вот так:
Полагаю сему виной как раз join_buffer_size 64M ?
Большого запаса между Key buffer size и total MyISAM indexes быть не должно иначе будут проблемы с Key buffer hit rate.
По поводу размера выделенного под кешер запросов. Внимательно посмотрите на вывод тюнера. Если просит их увеличить, значит текущих значений недостаточно.
Эти параметры влияют на размеры кеша запросов. Как думаете, если результат запроса будет взять из кеша, вместо того, чтобы выполнять его каждый раз, нагрузка будет меньше?
Т.е в будущее вы не смотрите? Как я понял у вас общаковый хостинг и на нём распологаются разного рода клиенты с разныи сайтами, а следовательно и разными базами и типами используемых в них движков. Начнут расти таблички с типом InnoDB без базовой оптимизации получите медленную работу.
Спрашиваете почему я выбрал те или иные значения? Трудно сказать, нравится мне эти числа 😂 А если серьёзно - подобные значения подбираются опытным путём (одинаковыми для всех они не будут). Судя по размеру баз и результата тюнера я предложил их увеличить.
И дальше чего? сколько прошло с момента перезапуска мускл? 5-10 минут. Эти результаты ничего не значат, подождите хотябы несколько часов.
И да, я не помню, чтобы укзывал key_buffer равным 2GB
Чему именно? Тому, что макс. используемый объём озу увеличился?
Нет, не только из за этого. Вы увеличили глобальный Key_buffer + другие буфферы, которые выделяются на каждый поток.
Ключевым словом тут будет максимальный объём, именно столько будет использоватся при одновременных 600 подключений к вашему мускл, сейчас же у вас их меньше десятка...