Кто постоянно пишет на диск – iotop – мониторинг LINUX, PostgreSQL

ПРОБЛЕМА:

Кто-то постоянно пишет на диск?
Средствами мониторинга СХД и vSphere было обнаружено, что некоторые виртуальные машины генерируют стабильный поток записи на диск (идеально полка) общей скоростью 5МБайт/с. Этим потоком забивается write cache СХД, что приводит к постоянному общему снижению производительности СХД.

МОНИТОРИНГ:

Очевидно, что какие-то процессы постоянно обращаются к жесткому диску. Помочь найти такие процессы может утилита iotop. Например, в Ubuntu 14.04 выполним:

apt-get install iotop

Запускаем iotop

iotop

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

ПРИЧИНА:

В данном случае "Полку" создает процесс PostgreSQL stats collector process - сбор статистики.
Отключать его не рекомендуют.
Можно создать ramdrive мегабайт на 32-64 и поставить на него stats_temp_directory

ссылки по теме:
http://www.sql.ru/forum/actualthread.aspx?tid=884967
http://it.rpkkirov.ru/pechalnaya-istoriya-so-schastlivym-koncom-chast-1-nachalo-postgresql-stat-collector/

Естественно, могут быть и другие специфичные процессы, которые требуют вынесения в RAM используемых директорий.

РЕШЕНИЕ:

Создаем раздел tmpfs в оперативной памяти размером 32 МБ для директории коллектора.
В /etc/fstab в конце добавляем строку, что бы настройки сохранялись после перезагрузки:

tmpfs /var/lib/postgresql/9.3/main/pg_stat_tmp tmpfs rw,size=32M,noatime,uid=103,gid=108,mode=0700 0 0

где

  • /var/lib/postgresql/9.3/main/pg_stat_tmp - директория, в которой процесс хранит свои файлы;
  • tmpfs - тип файловой системы;
  • rw - права на чтение и запись;
  • size=32M - размер раздела в мегабайтах;
  • noatime - отключает запись информации о последнем времени доступа (atime) при каждом чтении файла. Несколько увеличивает быстродействие;
  • uid=103,gid=108 - uid и gid пользователя из-под которого запущен Postgres. Посмотреть эти значения можно командой id postgres или cat /etc/passwd;
  • mode=0700 - разрешения на монтируемую директорию;
  • 0 - dump - используется утилитой dump для того чтобы определить, когда делать резервную копию. После установки, dump проверяет эту запись и использует значение, чтобы решить, подключать ли файловую систему. Возможные значения 0 или 1. Если 0, dump игнорирует файловую систему, если 1, dump сделает резервную копию. У большинства пользователей dump не установлен, поэтому в поле следует задать 0.
  • 0 - pass - (номер прохода). fsck проверяет число, подставленное в поле и решает, в каком порядке проверять файловую систему. Возможные значения 0, 1 и 2. Файловые системы со значением , равным 0, не будут проверены утилитой fsck. У корневой системы должен быть наибольший приоритет, 1, остальные файловые системы должны иметь приоритет 2.

Например, посмотреть uid и gid пользователя postgres:

cat /etc/passwd

видим:

postgres:x:103:108:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

Далле нужно остановить postgres:

/etc/init.d/postgresql stop

Временные файлы из /var/lib/postgresql/9.3/main/pg_stat_tmp должны удалиться.
Монтируем прописанную в fstab виртуальную директорию:

mount –a

Проверяем, что раздел подмонтировался:

df -h

tmpfs
Запускаем Postgres (или перезагружаем сервер):

/etc/init.d/postgresql start

и проверяем работу сервера PostgreSQL.

Теперь запустив утилиту iotop видим, что процесс PostgreSQL stats collector больше не беспокоит жесткий диск операциями ввода/вывода.

 

Метки: . Закладка Постоянная ссылка.

Добавить комментарий

Ваш e-mail не будет опубликован.

*