LINUX.ORG.RU
ФорумAdmin

Обращение к md0 останавливается на несколько минут


0

1

Всем привет!

У нас имеется сервер SUSE 11 x86_64, устанвленный на blade HS22 в IBM BladeCenter E.
На нем стоит Oracle 10g.
Данные хранятся на файловой системе raiserfs, которая размещена на устройстве md0 (software mirror). Устройство md0 составляют два устройства sdb и sde.

sdb и sde являются LUN-ами с дисковых систем IBM DS5020, подключенных через SAN-свичи на 8Гб/с.

Т.е. данные зеркалируются между двумя физическими дисковыми устройствами посредством софтверного зеркала.

Проблема заключается в следующем:
В неопределенное время люди начинают жаловаться, что «база зависает», т.е. не отвечает на любые запросы. Это состояние длится примерно 3-5 минут, после чего работа возобновляется.

В течении суток мы собирали статистику с помощью nmon (снапшот каждую минуту). За эти сутки указанная проблема произошла один раз примерно в 22:00 на три минуты.

В этот промежуток времени (22:00 - 22:03) графики nmon показали следующее:
- diskread, diskwrite, diskxfer - почти по нулям (не было интенсивного IO)
- diskbusy - все девайсы почти по нулям, кроме sdb (2-й сторидж девайс), который был 100%
- память (32ГБ) - наполовину пустая
- метрики pgpgin, pgpgout, pswpin, pswpout - по нулям
- сетевой трафик - практически по нулям
- семь процессов в состоянии blocked
- CPU %wait - 100% на 6-ти из 16-ти процессоров

Логи системы не содержат какие-либо ошибки.
Логи обеих дисковых систем, а так же SAN-свичей так же не содержат ошибок, что свидетельствует о нормальном функционировании устройств.

Судя по графикам, использование системы в указанный промежуток времени, а так же +/- 2 часа относительно указанного времени было минимальным

Кто-нибудь сталкивался с подобным поведением?

Заранее спасибо!


У меня на сервере есть диск который периодически вызывает тормоза при обращении. Не на три минуты, но где-то на 30сек (дефолтный таймаут в линухе для сата-устройств). В общем, я решил проблему исключением его из рейда.

Думаю у тебя нечто подобное.

true_admin ★★★★★
()

посмотри smart винтов на всякий случай. И проверь все ли обновления есть, иногда такое лечится апдейтами.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Не совсем понял. У тебя был хардверный рейд?

В нашей конфигурации отдельно-взятые диски не используются. Диск, на котором возникает проблема 100% busy (sdb) на самом деле является куском массива RAID10 на дисковой системе, который выдается по оптике. На этом же массиве создано еще несколько виртуальных дисков, которые выданы другим серверам, на одном из которых AIX 6.1, на другом Windows 2008. На них подобных проблем не замечали. Но в любом случае, если что-то не так с диском, то устройство его отрубает и пишет об этом в своем логе. Но лог чист, значит диски все целые...

По этому напрашивается вопрос, может быть это линуксовый софтверный рейд глючит?...

ejik
() автор топика
Ответ на: комментарий от ejik

софтварный у меня был рейд. Но дело было не в рейде, а в диске.

может быть это линуксовый софтверный рейд глючит?

может, поэтому обновись.

Но smart глянуть не помешает. Как и диск заменить, если есть свободная замена. А ещё atop -d (или любую другую тулзу) глянуть чтобы убедиться что оно busy, но при этом запросов не выполняет.

true_admin ★★★★★
()

Можно попробовать iotop позаписывать, посмотреть что обращалось к дискам, а потом lsof посмотреть куда оно обращалось.

xpahos ★★★★★
()

1. Если вы подозреваете диски, то надо проверить нагрузку на диски в этот момент.

2. Проблема точно в дисках, а не в канале к серверу/сетевом соединении? Может просто обновляется ip адрес в этот момент у сервера или у маршрутизатора?

3. Если диски, то посмотрите какой scheduler используется: cat /sys/block/sda/queue/scheduler cat /sys/block/sdb/queue/scheduler

ecли deadline, то это он может подвешивать систему. Лучше сменить на cfq (если он есть в выдаче команды выше).

echo cfq > /sys/block/sda/queue/scheduler echo cfq > /sys/block/sdb/queue/scheduler

4. Возможно в это время выполняется проверка целостности рейда? Если это у вас рейд, а не multipath, например.

5. А что за фс изспользуется?

soomrack ★★★★★
()
Ответ на: комментарий от true_admin

У меня на сервере есть диск который периодически вызывает тормоза при обращении. Не на три минуты, но где-то на 30сек (дефолтный таймаут в линухе для сата-устройств). В общем, я решил проблему исключением его из рейда.

Может в нем была включена функция энергосбережения и он тупо останавливался, а потом раскручивался?

soomrack ★★★★★
()
Ответ на: комментарий от ejik

Но в любом случае, если что-то не так с диском, то устройство его отрубает и пишет об этом в своем логе. Но лог чист, значит диски все целые..

Нифига. Диск может самостоятельно пытаться сделать relocate sector. И если bad секторов много, то это может занимать значительное время. И впоследствии отражаться на скорости доступа. Это будет отражено только в smart.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

и он тупо останавливался, а потом раскручивался?

это занимает даже не 10 секунд.

Диск может самостоятельно пытаться сделать relocate sector.

да, но всё равно 3 минуты это больше чем стандартный таймаут 20-30 секунд. Хотя хз что там scsi...

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

и он тупо останавливался, а потом раскручивался?

это занимает даже не 10 секунд.

У рейда есть задержка, сколько сек. он должен ждать перед обращением к диску после его раскрутки + может быть ошибка позиционирования головок + пр. Все в сумме вполне может набежать приличное время. Но в любом случае какая-то проблема с диском должна быть при таком времени. А это в смарте видно.

soomrack ★★★★★
()

Кто-нибудь сталкивался с подобным поведением?

Я вчера столкнулся с подобным дедлоком на ZFS: компиляция OpenOffice стоит или ворочается еле-еле. Для сравнения: на UFS2 OOo 3 бодро компилируется за два с половиной часа. Ядра процессора в idle 99% времени, часть процессов, относящихся к perl 5.12 и make чего-то ждёт (wait). После нескольких часов борьбы чего-то с неизвестно чем завершения компиляции не дождался — терпения не хватило, перезагрузил машину.

На томе с ZFS оставалось свободным около 12 ГБ, что должно по идее хватить для сборки, но том до этого использовался под торренты, фрагментация дикая, может в этом вся проблема?

Что у вас с md-томом? Может файловая система не может выделить свободные блоки, и процессы висят в ожидании освободившегося места для записи?

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

А еще может быть, что очень большие

echo /proc/sys/vm/dirty_background_ratio

echo /proc/sys/vm/dirty_ratio

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

soomrack ★★★★★
()

diskbusy - все девайсы почти по нулям, кроме sdb (2-й сторидж девайс), который был 100%

а iostat можно? вчастности, любопытно взглянуть на:
tps, Blk_read/s, Blk_wrtn/s, avgrq-sz, avgqu-sz, await, svctm, %util

mumpster ★★★★★
()
Ответ на: комментарий от iZEN

Может sysctl какие глянуть?

Параметры называются также:

dirty_background_ratio — процент занятой оперативной памяти начиная с которого pdflush начинает писать на диск

dirty_ratio — соотв. процент, после которого система отказывается писать в память, пока все не будет сброшено на диск

Всякие тесты стоит проводить с обнуленным swappiness (чтобы свопа не было) + overcommit_memory = 2 (чтобы процессам не выдавалось больше памяти, чем есть на самом деле).

soomrack ★★★★★
()
Ответ на: md0 от mumpster

большая отложенная запись

хорошо, тогда почему вторая половинка зекрала этому не подвержена?

А это был ответ не тс.

soomrack ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.