- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть БД (~12 гигов), в БД есть несколько табличек (innodb), в которых 2-3 миллиона записей, (есть одна на 16-18 миллионов, собственно логи доступа)
Сайт крутится под друпалом, поэтому оптимизировать конкретные запросы - сложновато будет.
Так вот, инсерты, апдейты и делиты в этой базе (почти всегда только в этих табличках) длятся от 5 (когда сервер mysql только (ре)стартанул) секунд и до 90.
Конфиг
Выкрутить innodb_buffer_pool_size (>= 9G) не могу, ибо на сервере всего 16 гигабайт
Селекты при этом стремятся к 0.0001
Помогите, братцы, а то я уже весь мозг проел себе :(
Если понадобиться, могу воложить variables
---------- Добавлено 11.04.2012 в 17:38 ----------
Все в одно сообщение не влезло, еще
для начала уменьши или выключи совсем :
query_cache_size = 4096M
Действительно ли нужно логи доступа в базе хранить? Они ведь непропорционально много фактов генерируют. Для многих CMS со встроенными логами доступа обычно советуют их отключить, а анализ посещаемости выполнять традиционными логоанализаторами из файлов access.log.
Ну и, конечно, нужно проанализировать эти самые запросы. Без этого шага будешь еще неделю крутить ручки вслепую.
для начала уменьши или выключи совсем :
query_cache_size = 4096M
Он у меня был 2.5гига, это в последний раз я его выставил в 4, сейчас откатил в 3, посмотрим, до этого было 1.5г, ругался что ему мало, если отключить - как может помочь?
Логи скорее всего не смогу отбросить - есть подозрения, что один из модулей использует эту табличку. Но это надо проверить.
если отключить - как может помочь?
А почему не может?
Связана или нет проблема с кешем может подтвердить профилирование запросов, но попробовать проще.
Покажите iostat -x. Если последние поля у винтов более 20%, то в магазин за нормальными SAS жесткими дисками либо SSD.
TC надо смотреть вашу БД - на предмет оптимизаций.
У drupal куча механизмов кеширования, их просто надо задействовать.
А почему не может?
Связана или нет проблема с кешем может подтвердить профилирование запросов, но попробовать проще.
Отключил кеш, забегало в разы лучше, спасибо! Видимо запросы каждый раз перестраивали кеш, что только вредило. Буду профилировать запросы, может еще что добьюсь, но за наводку спасибо огромное!
И раз уж пошла такая пьянка, не подскажите, как мне сократить число Temporary tables created on disk? И что порекомендуете? Все же оптимизировать запросы под кеш, или насиловать диски?
Покажите iostat -x. Если последние поля у винтов более 20%, то в магазин за нормальными SAS жесткими дисками либо SSD.
19.88 и 20.30
TC надо смотреть вашу БД - на предмет оптимизаций.
Могу ошибаться (не я администрирую сайт), но кажется там стандартный набор друпаловских модулей, никаких своих не писано.
У drupal куча механизмов кеширования, их просто надо задействовать.
Увы, на высокопосещаемом сайте кеширование друпала только вредило (как минимум на еще одного такого наткнулся, как я)
Поставил модуль boost - шикарный модуль, но за 2 часа аптайма mysql только он рапортует о медленных запросах (>5 секунд), но я уверен что его еще можно поднастроить. Буду признателен, если дадите еще ссылки на какие-либо модули для оптимизации.
И раз уж пошла такая пьянка, не подскажите, как мне сократить число Temporary tables created on disk? И что порекомендуете? Все же оптимизировать запросы под кеш, или насиловать диски?
С точки зрения чистого администратора, лучше /tmp перенести в tmpfs и уменьшить негативные эффекты от создания файлов.
Полностью избавиться только анализом и модификацией запросов, что не всегда разумно, а для CMS использующих ORM иногда и невозможно. Зачастую увеличение tmp_table_size не влияет на создание временного файла.
Я бы в вашей конфигурации попробовал бы остальные буферы уменьшить, но за их счет увеличить innodb_buffer_pool.
И раз уж пошла такая пьянка, не подскажите, как мне сократить число Temporary tables created on disk? И что порекомендуете? Все же оптимизировать запросы под кеш, или насиловать диски?
Только изменением запросов. Т.к. существует несколько ситуаций, когда временная таблица будет всегда создаваться на диске, вне зависимости от размера и ограничений на размер временной таблицы в памяти в конфиге:
Часто действительно имеет смысл сделать tmpfs для временной папки mysql, и это кстати, может быть папка отличная от /tmp, настраивается в конфиге mysql.
А параметрам max_heap_table_size, tmp_table_size имеет смысл вернуть более разумные значения.
Кстати, не пологайтесь на результат работы скриптов, точнее на рекомендации, они не всегда разумны.
временная таблица будет всегда создаваться на диске
МОЖЕТ создаваться при этих условиях, а не ВСЕГДА будет. по крайней мере первое условие в лоб не выполняется.