Назад | Перейти на главную страницу

Свопинг в системах Solaris Unix и заблокированные процессы

Некоторые пользователи жалуются на низкую производительность на новом сервере. Единственный запущенный на этой машине - Oracle 10.2.

На первый взгляд все нормально: нагрузка минимальная, в логах ничего. Единственное, что я могу найти, это то, что vmstat жалуется на множество подкачки и заблокированных процессов. С чего мне начать устранение этой проблемы?

# vmstat -S 5 5
 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  si  so pi po fr de sr rm s0 s1 s2   in   sy   cs us sy id
 0 0 0 12420128 16679384 0 0 672 809 809 0 0 -0 2 2 -0  875  572  652  0  0 100
 0 7 0 1926560 5871472 0  0 4396 11463 11463 0 0 0 0 0 0 1796 662 1731 0  0 100
 0 2 0 1925984 5934624 0  0 19058 13657 13657 0 0 0 0 0 0 4877 1336 6145 0 1 99
 0 3 0 1925984 6126144 0  0 12691 13821 13821 0 0 0 0 0 0 3708 1055 4537 0 1 99
 0 5 0 1925984 6093776 0  0 6033 15628 15628 0 0 0 0 0 0 2215 745 2386 0  0 100

Извините, но ваш вывод vmstat на самом деле не показывает подкачки. Во-первых, в Solaris определение «подкачки» - это когда весь процесс выгружается из-за чрезмерной нагрузки на память. Это ваши 0 si и так столбцы. Вы не должны действительно видеть это во всех системах, кроме наиболее патологически загруженных. Столбцы pi и po могут отображать "разбиение на страницы". Действия, которые обычно называются «подкачкой» в других системах, в терминологии Solaris называют «подкачкой». Но вам нужно запустить «vmstat -p», чтобы посмотреть числа api / apo (анонимные входы и выходы страниц) - это то, что люди обычно называют «свопингом». Столбцы pi / po включают то, что по сути является нормальной деятельностью файловой системы. (например, ввод-вывод с отображением памяти).

Идентифицировать рассматриваемое устройство вам поможет iostat. Что-то вроде «iostat -dxzn 1». Скорее всего, вы увидите несколько устройств, загруженных на 100%, так как у вас заблокированы процессы на диске IO (столбец vmstat b).

Я обычно начинаю с того, чтобы получать от пользователей больше подробностей. Что именно не работает быстро? Даже если вы вернете "все", попытайтесь определить хотя бы один конкретный случай, транзакцию, задание, ... что-то, что можно отследить.

Затем проследите его через Oracle (например, трассируйте 10046, если он не слишком сложный), проверьте, какие ресурсы сервера используются (какие таблицы, на каких дисках ...), выясните, на что тратится время, ...

По моему опыту, когда я увидел 100% занятые диски в iostat -znx 3, это был либо плохо настроенный оракул, либо неоптимальный план выполнения, выполняющий полное сканирование таблицы, или что-то подобное.

Другой способ - посмотреть, какие данные находятся на занятых дисках (табличные пространства, или повторить, или что?), А затем найти либо дорогостоящие транзакции ввода-вывода, либо длительные операции, либо что-то в этом роде.

Кстати - вы пересчитывали статистику и тому подобное при переходе на новый сервер? Динамический оптимизатор Oracle - сука в обоих смыслах.

Я слишком новичок, чтобы комментировать, поэтому "отвечу" ...

Попробуйте запустить «iostat -xcn 1», чтобы узнать, что у вас горячий блочные устройства есть. Вы используете сырые тома или отформатированные? ZFS или UFS (я предполагаю, что это Solaris 10 ...)? Какая у вас структура диска?

Вы немного меняете местами .. вы настроили свои семафоры и тому подобное? Используете проекты или / etc / system (опять же, предполагая Solaris 10 ..)?

Если внимательно присмотреться к опубликованным вами числам, видно, что местами нет и вставлено 0 страниц. Даже с -S если ваша машина меняет местами, вы не должны видеть 0 в этих столбцах.

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

В настоящий момент у меня нет доступа к машине Solaris, поэтому я основываю это на копии справочная страница для vmstat (1)

Что ж, если вы меняете местами, вы обычно увеличиваете ожидание ввода-вывода, что приведет к вялому поведению. Какая вообще нагрузка? Нагрузка может "ощущаться" по-разному в зависимости от того, что ее вызывает. Пики нагрузки из-за высокой загрузки ЦП снижают производительность, но похоже, что если ожидание ввода-вывода велико, нагрузка 15 ощущается как 1000.