Определение источника нагрузки HDD

12
D
На сайте с 05.06.2007
Offline
155
4408

Определение источника нагрузки HDD

Помогите вычислить что именно подгружает жёский и как с этим бороться :)

Система с RAID1, проблема в том что бывают пики, причём очень частые, когда DISK1 по статистике atop > 90% busy, в такие моменты сайт открывается не сразу, а в течении 2-3х секунд (иногда и все 10), данная ситуация абсолютно не приемлима и требуется выявить источник.

Верхушка top (swap не юзается)

Tasks: 200 total, 1 running, 198 sleeping, 0 stopped, 1 zombie
Cpu(s): 1.8%us, 3.3%sy, 15.2%ni, 61.5%id, 16.5%wa, 0.8%hi, 1.0%si, 0.0%st
Mem: 8193844k total, 7551172k used, 642672k free, 408044k buffers
Swap: 2102456k total, 764k used, 2101692k free, 5930656k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ UID COMMAND
30257 mysql 20 0 603m 289m 6728 S 15 3.6 2171:56 103 mysqld
30786 user234 30 10 279m 32m 4076 D 6 0.4 0:00.18 1055 httpd
30806 user1 30 10 272m 25m 3892 D 1 0.3 0:00.04 1085 httpd
13081 root 0 -20 14368 4136 2400 S 1 0.1 0:27.60 0 atop
27265 www 20 0 50088 25m 752 D 1 0.3 0:09.54 1000 nginx
27266 www 20 0 50088 25m 752 D 1 0.3 0:09.72 1000 nginx

Вот результат atop -d 2



ATOP - s2 2011/02/26 19:05:54 2 seconds elapsed
PRC | sys 0.83s | user 1.87s | #proc 192 | #zombie 0 | #exit 62 |
CPU | sys 45% | user 102% | irq 22% | idle 532% | wait 103% |
cpu | sys 13% | user 29% | irq 0% | idle 46% | cpu005 w 12% |
cpu | sys 8% | user 7% | irq 10% | idle 76% | cpu006 w 0% |
cpu | sys 4% | user 5% | irq 11% | idle 78% | cpu002 w 1% |
cpu | sys 7% | user 14% | irq 0% | idle 78% | cpu007 w 0% |
cpu | sys 2% | user 18% | irq 0% | idle 80% | cpu001 w 0% |
cpu | sys 5% | user 11% | irq 0% | idle 8% | cpu000 w 75% |
cpu | sys 2% | user 11% | irq 0% | idle 87% | cpu003 w 0% |
cpu | sys 4% | user 7% | irq 0% | idle 74% | cpu004 w 15% |
CPL | avg1 10.47 | avg5 8.58 | avg15 8.27 | csw 3890 | intr 9907 |
MEM | tot 7.8G | free 346.8M | cache 5.9G | buff 389.2M | slab 475.8M |
SWP | tot 2.0G | free 2.0G | | vmcom 1.6G | vmlim 5.9G |
DSK | sda | busy 94% | read 1 | write 126 | avio 15 ms |
DSK | sdb | busy 21% | read 0 | write 128 | avio 3 ms |
NET | transport | tcpi 4103 | tcpo 5821 | udpi 69 | udpo 70 |
NET | network | ipi 4173 | ipo 6157 | ipfrw 0 | deliv 4172 |
NET | eth0 30% | pcki 3698 | pcko 5683 | si 1554 Kbps | so 30 Mbps |
NET | lo ---- | pcki 475 | pcko 475 | si 2621 Kbps | so 2621 Kbps |

PID RDDSK WRDSK WRDSK_CANCEL DSK CMD 1/10
1630 0K 1444K 0K 78% kjournald
27265 0K 148K 8K 8% nginx
27266 0K 128K 0K 7% nginx
27267 0K 84K 0K 5% nginx

ещё пара примеров

PID RDDSK WRDSK WRDSK_CANCEL DSK CMD 1/30
27267 0K 252K 152K 44% nginx
1630 0K 188K 0K 33% kjournald
13119 0K 52K 44K 9% httpd
27268 8K 16K 0K 4% nginx


PID RDDSK WRDSK WRDSK_CANCEL DSK CMD 1/46
16988 0K 132K 132K 25% httpd
1630 0K 116K 0K 22% kjournald
27268 0K 104K 16K 20% nginx
27265 0K 60K 0K 11% nginx
27267 0K 48K 56K 9% nginx
27266 0K 24K 0K 5% nginx

iostat -o -d 2

в пики нагрузки на диск


1630 root 0 B/s 130.26 K/s 0.00 % 99.99 % [kjournald]
27265 www 0 B/s 0 B/s 0.00 % 99.99 % nginx: worker process
27266 www 27.63 K/s 34.21 K/s 0.00 % 66.00 % nginx: worker process
1532 root 0 B/s 0 B/s 0.00 % 12.53 % [md2_raid1]
27267 www 6.58 K/s 5.26 K/s 0.00 % 1.14 % nginx: worker process

и ещё

27266 www 0 B/s 1.32 K/s 0.00 % 99.99 % nginx: worker process
24441 azadlezg 0 B/s 2.64 K/s 0.00 % 99.99 % httpd -k start
27267 www 0 B/s 0 B/s 0.00 % 99.99 % nginx: worker process
27265 www 0 B/s 2.64 K/s 0.00 % 99.58 % nginx: worker process
24445 ledokol 0 B/s 0 B/s 0.00 % 91.83 % httpd -k start
1532 root 0 B/s 0 B/s 0.00 % 84.94 % [md2_raid1]
6198 root 0 B/s 0 B/s 0.00 % 83.35 % rsyslogd -c3

и ещё

27267 www 0 B/s 1.32 K/s 0.00 % 99.99 % nginx: worker process
27265 www 0 B/s 7.92 K/s 0.00 % 99.99 % nginx: worker process
25770 Debian-e 0 B/s 0 B/s 0.00 % 99.99 % exim4 -bd -q30m
25702 Debian-e 0 B/s 0 B/s 0.00 % 99.99 % exim4 -bd -q30m
27266 www 0 B/s 18.47 K/s 0.00 % 98.38 % nginx: worker process
1532 root 0 B/s 0 B/s 0.00 % 70.02 % [md2_raid1]
1630 root 0 B/s 0 B/s 0.00 % 61.53 % [kjournald]

и ещё

1532 root 0 B/s 0 B/s 0.00 % 90.89 % [md2_raid1]
14573 admiral1 16.52 K/s 0 B/s 0.00 % 50.24 % ./ices -B -c /home/admiral
30794 root 0 B/s 0 B/s 0.00 % 36.32 % [pdflush]
6198 root 0 B/s 0.52 K/s 0.00 % 35.36 % rsyslogd -c3
27267 www 2.58 K/s 2.07 K/s 0.00 % 15.36 % nginx: worker process
27266 www 0 B/s 15.49 K/s 0.00 % 15.08 % nginx: worker process
1630 root 0 B/s 0 B/s 0.00 % 15.05 % [kjournald]
27268 www 1.03 K/s 25.81 K/s 0.00 % 3.59 % nginx: worker process
26580 ledokol 0 B/s 0 B/s 0.00 % 3.09 % httpd -k start
26613 us1515 0 B/s 0.52 K/s 0.00 % 2.43 % httpd -k start

и ещё

27265 www 0 B/s 0 B/s 0.00 % 95.11 % nginx: worker process
27266 www 0 B/s 0 B/s 0.00 % 94.67 % nginx: worker process
1532 root 0 B/s 0 B/s 0.00 % 93.23 % [md2_raid1]
27267 www 0 B/s 1.32 K/s 0.00 % 91.17 % nginx: worker process
27268 www 0 B/s 0 B/s 0.00 % 80.37 % nginx: worker process
1630 root 0 B/s 0 B/s 0.00 % 73.42 % [kjournald]
27458 eugen 0 B/s 0 B/s 0.00 % 68.39 % httpd -k start
14573 admiral1 0 B/s 0 B/s 0.00 % 51.00 % ./ices -B -c /home/admiral
27465 guru 0 B/s 0 B/s 0.00 % 22.31 % httpd -k start
25853 mysql 0 B/s 2.64 K/s 0.00 % 0.00 % mysqld --basedir=/usr --da

видно что прогрессируют nginx и kjournal, на сколько это достоверная инфа по нагрузке на HDD, и от чего такое происходит, получается nginx много проксирует и сохраняет на диск перед тем как отдать клиенту?

Вот ещё конфиг nginx:


user www www;
worker_processes 4;

#[ debug | info | notice | warn | error | crit ]
error_log /var/log/apache/error_log error;
pid /var/log/panel/nginx_pid;
events { worker_connections 16384; }
worker_rlimit_nofile 16384;

http {
#if cpu ok set to on
#gzip on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 5;
reset_timedout_connection on;

include mime.types;
default_type application/octet-stream;

include koi-win;

log_format main '$http_host $remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" $request_time';
access_log /var/log/apache/access_log main;

root /root/nginx/html;
index index.php index.html index.htm;

client_body_temp_path /tmp/nginx;
client_max_body_size 30m;
client_body_buffer_size 256k;
large_client_header_buffers 8 32k;
proxy_temp_path /tmp/proxy_temp;

#more vhosts 1 vhost = 10 size
server_names_hash_max_size 10240;
server_names_hash_bucket_size 128;

fastcgi_index index.php;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
fastcgi_temp_path /tmp/nginxphp;
fastcgi_hide_header X-Powered-By;

proxy_connect_timeout 60;
proxy_read_timeout 180;
proxy_send_timeout 180;

server {
listen 80;
access_log off;
location / {
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Server-Addr $server_addr;
}
}

server {
listen 80;
server_name domain.ru ;
access_log /var/log/apache/access_log main;
access_log /var/log/apache/domain.ru.log main;
error_log /var/log/apache/domain.ru.err error;
set $root /home/admin/html;
root $root;
location / {
access_log off;
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
}
location ~* ^.+\.(jpg|jpeg|gif|png|bmp|ico|css|zip|tgz|gz|tar|rar|bz2|doc|xls|exe|pdf|ppt|txt|wav|mp3|rtf|js|swf)$ {root $root; expires 30d;}
}

дальше аналогичные пару сотен vhosts

За любую помощь и подсказки по уменьшению нагрузки на HDD буду весьма благодарен :)

PS> система debian lenny 64 bit

Написал не мало шедевров ;)
esetnod
На сайте с 16.07.2009
Offline
134
#1

На уровне файловой системы можно попробовать noatime если atime не нужен в прицнипе и data=writeback, если питание стабильное.

Быстрый хостинг на SSD от $0.99 (http://just-hosting.ru/) | OpenVZ (http://just-hosting.ru/vds.html) и KVM (http://just-hosting.ru/vds-kvm.html) VDS от $7.95
Andreyka
На сайте с 19.02.2005
Offline
822
#2

Проверь SMART

Не стоит плодить сущности без необходимости
D
На сайте с 05.06.2007
Offline
155
#3

С этой утилитой ещё не приходилось работать, этот вывод о чём то говорит?

smartctl -A /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 099 099 051 Pre-fail Always - 3837
3 Spin_Up_Time 0x0007 081 081 011 Pre-fail Always - 6590
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 5
5 Reallocated_Sector_Ct 0x0033 031 031 010 Pre-fail Always - 1994
7 Seek_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0
8 Seek_Time_Performance 0x0025 100 100 015 Pre-fail Offline - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 3960
10 Spin_Retry_Count 0x0033 100 100 051 Pre-fail Always - 0
11 Calibration_Retry_Count 0x0012 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 5
13 Read_Soft_Error_Rate 0x000e 099 099 000 Old_age Always - 3816
183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
184 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 4451
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 062 062 000 Old_age Always - 38 (Lifetime Min/Max 15/38)
194 Temperature_Celsius 0x0022 062 062 000 Old_age Always - 38 (Lifetime Min/Max 15/41)
195 Hardware_ECC_Recovered 0x001a 100 100 000 Old_age Always - 424583591
196 Reallocated_Event_Count 0x0032 052 052 000 Old_age Always - 1994
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 16
198 Offline_Uncorrectable 0x0030 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x000a 099 099 000 Old_age Always - 2732
201 Soft_Read_Error_Rate 0x000a 097 097 000 Old_age Always - 211

Andreyka
На сайте с 19.02.2005
Offline
822
#4

Делай бекапы и меняй диск

D
На сайте с 05.06.2007
Offline
155
#5

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

После каких границ следует менять диск, на других серверах тоже есть битые сектора, но не так много.

Andreyka
На сайте с 19.02.2005
Offline
822
#6

Как только появляются - сразу и менять

D
На сайте с 05.06.2007
Offline
155
#7

Ну вот, после какого то теста видимо диск вылетел из RAID1, в atop больше не появляется и smart не читает.

smartctl -A -T permissive /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Short INQUIRY response, skip product id
Read defect list: asked for grown list but didn't get it

Можно ли заменить sda и синхронизировать его с sdb без переустановки всей системы?

Также, что очень странно, на новозаказанном сервере 2 диска (другой марки) и показатели не очень радуют:

ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 113 100 006 Pre-fail Always - 55556769
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 5
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 100 253 030 Pre-fail Always - 302690
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 169
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 5
183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 3
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 065 062 045 Old_age Always - 35 (Lifetime Min/Max 18/38)
194 Temperature_Celsius 0x0022 035 040 000 Old_age Always - 35 (0 18 0 0)
195 Hardware_ECC_Recovered 0x001a 031 031 000 Old_age Always - 55556769
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 11042360918194
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 188318659
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 370921239

Raw_Read_Error_Rate и Seek_Error_Rate на обоих дисках очень высокие, на всех других серверах эти параметры либо 0, либо копеишные. Стоит ли беспокоиться, это его до меня так заездили? :)

Andreyka
На сайте с 19.02.2005
Offline
822
#8
Dimanych:

Можно ли заменить sda и синхронизировать его с sdb без переустановки всей системы?
Стоит ли беспокоиться, это его до меня так заездили? :)

Да

Да

Да

D
На сайте с 05.06.2007
Offline
155
#9

Спасибо за помощь, буду просить о замене диска.

Что ещё заметил, LA обычно был 7-10, теперь 2-3.

Andreyka
На сайте с 19.02.2005
Offline
822
#10

ОС не пытается трогать сдохший диск, вот LA упал

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий