netwind

Рейтинг
419
Регистрация
06.05.2007
stepan007:
А чем или как можно безболезненно делать бекапинг?

/usr/local/bin/safe_file_backup. у меня так называется.

безболезненность лишь относительно других обычных программ. некоторое повышение нагрузки все равно заметно и скорость тоже приходится ограничивать.

совершенно точно, что кеш этим решением не вымывается .

stepan007:

Насчет бекапа надо изучать rsync - у меня им переносятся дампы баз, с установленными nice, ionice и опцией --bandwith-limit. А полный бекап делается стандартными средствами директадмина.

Вижу, идею вы поняли. Но зачем вы описываете как не надо делать?

rsync, как и многие другие программы, кеш попортит.

как и изготовление дампов в виде sql.

Все это конечно становится важно, если ничего другое не помогает.

stepan007:
Таких нагрузок нету, вообще обычно используется 50 дочерних процессов (busy+idle). Поставил start и minspare 25, maxspare 50, serverlimit и maxclients 100, maxrequestperchild 250.

Вот именно : нагрузок нет, но предельное значение вы выставляете избыточно большое. Иногда, по разным причинам число апачей может резко увеличиться. Предельное значение MaxClients это защита от инвалидации кеша файлов ОС. Вот 50-60 и поставьте.

stepan007:
Ну это да, но все равно бекапы надо делать. И даже если платить за решения, которые проводят бекапинг на стороне бекап-сервера - все равно кеши пострадают, т.к. будет интенсивное чтение файлов.

Можно выбрать такой скрипт бекапа, который кеш не затрагивает вообще.

Хотя, если сделать простой и достаточно медленный бекап, то данные будут успевать "влетать назад" в кеш и все тоже пройдет плавно.

stepan007:
Сейчас рестарт mysql равносилен дауну сервера минут на 15, пока он закеширует файлы и все станет нормально.

можете попробовать при загрузке mysql исполнять операторы LOAD INDEX INTO CACHE, но на хостинге неизвестных сайтов это целая проблема, выбрать горячие индексы. Опять палка о двух концах: они загрузят в память вообще все части индексов, в том числе и не нужные. Обычно никто не рестартит mysql. Я бы в вашем случае потерпел.

stepan007:
Вообще можно попробовать key_buffer_size вообще убрать и по идеи система сама закеширует нужные ей индексы и таблицы, и в данном случае в ОЗУ не будут висеть индексы от неиспользуемых БД (которые туда попадают при оптимизации БД или при ежедневном дампе БД). Может стоит попробовать или это глупо?

Да, это глупо. Mysql точно лучше ОС знает какие файлы ему кешировать внутри себя. Индексы почти всегда приоритетнее данных.

Eaccelerator вообще поставил чисто попробовать.Что подскажите, как поступить?

я за то, чтобы попробовать кеш небольшого размера - 512мб. Но это только предположение.

это collation - правила сравнения.

_ci - case insensitive , регистронезависимое.

_cs - case sensitive, регистрозависимое

_bin - binary, двоичное, то есть сравниваются отдельные символы как последовательности байт.

_general для utf8 показывает, что правильно сравниваются только основные символы, а во всяких там редких алфавитах может не работать правильно. русский - не редкий.

выбирай согласно задаче.

stepan007, вместе с nginx вам решительно не нужно MaxClients 250. Это все тоже повлияет на использование памяти.

stepan007:
ну по идеи кеш акселератора не может быть вытеснен - к нему же постоянно должны идти обращения. Также установлен shm_ttl и shm_prune_period и еще tmpwatch есть, тоже чистит.

Вообще, я заметил, что вы неправильно понимаете механизм кеширования.

В широком смысле кеширование это и key_buffer у mysql и кеш eaccelerator. вы пытаетесь сделать кеш такого размера чтобы поместились все данные, но это не нужно и невыгодно, так как приводит к перерасходу памяти и свопингу как у вас.

У вас действительно порядка нескольких Гб php-кода ? Зачем использовать php-cli ? это хостинг или что?

Почему решил использовать tmpfs, нашел статьи где рекомендуют все такое (php сессии, временные файлы mysql, кеши php акселератора) засунуть именно туда. Насчет mysql-slow, решил его сюда положить, чтобы уменьшить нагрузку на hdd, хотя думаю его вообще выключить (также в /dev/null отправляю логи exim, с недавнего времени отключил логи httpd).
Почему не сделал через shm - апач не стартует, если вписать shm_size более 1024МБ (1ГБ очень быстро заполнялся и я думал, что надо гораздо больше). Но сейчас стоит 4096МБ, хотя используется где-то до 1,5ГБ.

С тех пор как Одноклассники научили людей писать в интернете, они слишком легко пишут ерунду.

По крайней мере кеш eacelerator бессмысленно держать в tmpfs, если его можно поместить в память внутренними средствами. Логи, как правило, пишутся многими программами буферизировано и большой нагрузки не добавляют. Вы больше потеряете от отключения slow-log в mysql.


По поводу кешей, Вы уже советовали уменьшить key_buffer_size, может еще что-то уменьшу в my.cnf - попробовать можно, а там видно будет. Ну это уже ночью или завтра, т.к. бекап еще идет.

такой длительный бекап неизбежно выносит все кеши. я уже обращал внимание на это в начале темы.

stepan007, содержимое tmpfs точно так же может быть вытеснено в своп при этом не будет ассоциировано ни с одним процессом.

С чего вы вообще решили использовать tmpfs ?

Если поставить eaccelerator.shm_only = "1", то он должен использовать память вместо диска без дополнительных ухищрений в виде tmpfs.

Ну и как и раньше, нет смысла гнаться за гигантскими размерами кешей. Пусть кеширует только самые важные скрипты.

и mysql-slow.log совершенно не понятно с какой целью хранить в памяти.

myhand, еще можно сказать "не извлекаете дополнительную прибыль от эксплуатации на еще немного большей нагрузке". так ведь уже совсем другая окраска без изменения технически предпринятых действий и не выглядит глупо. пользуйтесь этой формулировкой .

myhand:
Вам уже писали, что проблема не в проверке. Не выливается, ну и что я делаю не так, объясните?

не эксплуатируете системы на пределе возможностей.

по остальным пунктам полностью не согласен.

myhand:
Т.е. сразу и попал в debian, верно? Вместе с кронтабом.

Реально это произошло только через год, когда вышел etch. Это ж дебиан. Так у них всегда.

myhand:
Де-факто, md raid был страховкой от отказа диска целиком. Видимо, люди полагались на большее, а тут появились SATA (помните, "ZFS любит SATA!"), терабайтные диски - отсюда и проверки, а сейчас вот badblocks.
Все закономерно.

Не закономерно, а странно. Бедблоки всю дорогу были и на маленьких и на больших дисках.

Наоборот, чем меньше диски тем более ненапряжно их проверять. А вот на терабайтниках проверка затянется и выльется в неприятные проблемы в понедельник утром.

myhand:
С чего вы взяли, что оно "работало"? Вы ждете, что вам сразу волшебная фея прилетит и расскажет, что данные в каком-то секторе вообще "тю-тю".

ну как бы md raid был задолго до 2007. саму возможность запускать проверку приделали в 2.6.16 - март 2006. А сам raid включили в ядро где-то в 1996 году в 1.3.69.

т.е. 10 лет вопрос о необходимости сверки массива не был насущным и разработчиков не волновал.

учитывая это, разве не очевидно, что большинству на эту проверку наплевать?

Всего: 6293