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

высокое использование диска = io-bound на веб-сервере apache + postgresql?

У меня есть сервер, на котором запущены apache, postgresql и множество сайтов, и мои графики от моего хостинг-провайдера показывают в основном постоянную загрузку диска. Использование диска 10k / s. Это кажется плохой идеей, но я не совсем уверен, почему - загрузка в порядке, время ответа сервера разумное. Сначала я подумал, что это произошло из-за того, что ящик застрял в свопе, потому что для каждого запущенного сайта было 2 потока сервера приложений, но количество работающих сайтов уменьшилось, а использование диска все еще велико. Используется небольшой своп, но много свободной памяти. Сверху:

load average: 0.70, 0.28, 0.21

Cpu(s):  3.6%us,  1.4%sy,  0.0%ni, 93.9%id,  0.7%wa,  0.0%hi,  0.0%si,  0.4%st
Mem:   1731880k total,  1530124k used,   201756k free,    68360k buffers
Swap:  2359288k total,     1676k used,  2357612k free,   884892k cached

Итак, я посмотрел на vmstat, и он говорит, что проблема не в подкачке:

root@foobar# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   1676 175220  68120 880856    0    0     1    20   20   15  4  1 94  1
 0  0   1676 174096  68140 881140    0    0     0  6484 1452  487  2  1 97  0
 0  0   1676 173848  68156 881420    0    0     0  5804  899  310  0  1 99  0
 0  0   1676 173600  68168 881768    0    0     0  5376  834  266  0  0 98  2
 0  0   1676 173228  68176 881880    0    0     0  5376  775  259  0  1 99  0
 1  0   1676 173044  68188 882152    0    0     0  3584  626  249  0  1 99  0
 0  0   1676 172796  68208 882424    0    0     0  6668 1450  593  2  1 97  0
 1  0   1676 181352  68224 882700    0    0     0  5760 2373 1038  3  2 95  0
 0  0   1676 181336  68228 882836    0    0     0  5376 3367 1289  7  1 91  0
 0  0   1676 181088  68236 883264    0    0     0  5376 1294  508  2  1 97  0
 0  0   1676 180848  68252 883440    0    0     0  5376 1217  410  1  1 98  0
 0  0   1676 180716  68264 883480    0    0     0  8444 1127  270  0  1 99  0
 0  0   1676 181584  68272 883488    0    0     0  5676 1285  624  1  1 98  0
 0  0   1676 180956  68272 883496    0    0     0  5376 1069  377  1  1 97  0
 0  0   1676 180964  68272 883496    0    0     0  5376  753  299  0  1 99  0

Я попытался увеличить настройки postgresql shared_mem и work_mem, но безрезультатно. Я действительно не знаю, как отследить, что происходит.

редактировать: вот большое открытие iotop:

26331 be/4 postgres    0.00 B/s    5.00 M/s  0.00 %  0.00 % postgres: stats collector process

работает постоянно, в основном. Все остальное в несколько кбит / с.

Какие-либо предложения?

iotop выделит причину проблемы.