Добрый день,
Есть веб-сервер на
6.4-RELEASE-p7 FreeBSD 6.4-RELEASE-p7 #0: Fri Oct 2 01:28:08 UTC 2009 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/SMP amd64Софт как обычно: апач, nginx, mysql, named, ftp.
Трафика не много, около 2 мегабит.
И вот в топе наблюдаю странную картину:
last pid: 29001; load averages: 2.34, 2.39, 2.36 up 11+21:04:42 16:00:50
100 processes: 3 running, 95 sleeping, 2 stopped
CPU: 28.1% user, 0.0% nice, 68.9% system, 0.6% interrupt, 2.4% idle
Mem: 566M Active, 831M Inact, 267M Wired, 56M Cache, 212M Buf, 103M Free
Swap: 4045M Total, 100K Used, 4045M FreePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
90307 www 1 4 0 125M 45568K accept 0 4:01 4.74% httpd
79614 www 1 4 0 122M 42660K accept 0 1:17 4.25% httpd
764 www 1 4 0 121M 41760K accept 1 3:53 4.00% httpd
75274 www 1 4 0 122M 42708K accept 0 3:48 3.76% httpd
952 mysql 36 20 0 513M 208M kserel 0 948:37 3.42% mysqld
79610 www 1 4 0 124M 44364K accept 0 1:16 3.03% httpd
79613 www 1 4 0 124M 44364K accept 1 1:20 2.64% httpdОткуда, блин, 68.9% system?
Диск не нагружен, зеркало на базе gmirror в порядке, в логах чисто, ошибок на интерфейсах нет, место свободное есть, ipfw включен, но правил там штук 15. top -S показывает так:
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
41 root 1 171 52 0K 16K pgzero 0 16.8H 7.18% pagezero
79609 www 1 4 0 124M 44352K accept 1 1:23 5.66% httpd
952 mysql 36 20 0 513M 208M kserel 1 948:58 4.83% mysqld
75274 www 1 4 0 122M 42708K accept 0 3:58 4.44% httpd
10 root 1 171 52 0K 16K RUN 1 120.9H 4.30% idle: cpu1
79608 www 1 4 0 121M 41632K accept 0 1:32 4.15% httpd
11 root 1 171 52 0K 16K RUN 0 129.4H 3.81% idle: cpu0Подскажите куда копать?
>[оверквотинг удален]
> root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/SMP amd64
>
>Софт как обычно: апач, nginx, mysql, named, ftp.
>Трафика не много, около 2 мегабит.
>И вот в топе наблюдаю странную картину:
>Откуда, блин, 68.9% system?
>Диск не нагружен, зеркало на базе gmirror в порядке, в логах чисто,
>ошибок на интерфейсах нет, место свободное есть, ipfw включен, но правил
>там штук 15. top -S показывает так:
>Подскажите куда копать?Оно постоянно так, или периодически/под нагрузкой/от балды?
Давно fsck-али? посидите, помониторьте всякими *stat-ами, напр. iostat...
>Оно постоянно так, или периодически/под нагрузкой/от балды?
>Давно fsck-али? посидите, помониторьте всякими *stat-ами, напр. iostat...Последний час оно стабильно держится на таком уровне, а раньше просто не смотрел.
А что именно мониторить? Дисковая нагрузка там не большая. systat -vmstat 1
1 users Load 2.60 2.48 2.48 Mar 19 16:31Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 579828 22188 1019472 36472 180200 count
All 650496 24716 5371604 40544 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt 21557 cow 4120 total
2 12 86 20k 94k 86k 356 1176 94k 47154 zfod uhci0 ehci
37876 ozfod 37 uhci1+ 17
62.0%Sys 0.7%Intr 34.3%User 0.0%Nice 2.9%Idle 80%ozfod 1994 cpu0: time
| | | | | | | | | | | daefr 95 em0 irq256
===============================>>>>>>>>>>>>>>>>>> 51368 prcfr em1 irq257
185 dtbuf 92503 totfr 1994 cpu1: time
Namei Name-cache Dir-cache 150000 desvn react
Calls hits % hits % 74592 numvn pdwak
38423 38416 100 24987 frevn pdpgs
1341 intrn
Disks ad4 ad6 275608 wire
KB/t 115 115 579752 act
tps 11 11 832936 inact
MB/s 1.21 1.21 76304 cache
%busy 1 1 103944 free
217440 bufИ как бы побезопаснее прогнать fsck на этом удаленном, боевом сервере чтобы ничего плохого не вышло?
Кстати, а оно не может быть связано с процессом pagezero?
sysctl -a | grep zero
vm.stats.misc.zero_page_count: 0
vm.stats.misc.cnt_prezero: -28686458
vm.idlezero_maxrun: 16
vm.idlezero_enable: 1
security.bsd.map_at_zero: 1
На других серверах есть vm.idlezero_enable: 0 и vm.idlezero_enable: 1. Но нигде это руками не включалось и не выключалось. Но такой проблемы не наблюдается.
>Кстати, а оно не может быть связано с процессом pagezero?В пределе может быть связано с чем угодно. Из своего опыта могу только вспомнить, что как-то был аномальный sys% из-за грязной ФС и mysql с его binlog-ом - сервер был не боевой, но под активным юзанием. После сбоя питания никто не проверил таблицы мускуля на покоцанность, а fsck при старте ФС прочекал, но не исправил. При отключении сервера от сетки (чтоб доп. нагрузку никто не создавал) оставалось невнятное шуршание дисками, видимое по iostat и загрузка sys cpu. Ребутнулись в single-user, чтобы все разделы были отмонтированы, fsck-нули всё (была куууча исправлений), перегрузились и все прошло.
Если fsck пустить без ключей - он исправлять ничего не будет, а просто выведет косяки, какие найдет. И раздел отмонтировать не надо.
Впрочем, у вас, видимо, не с дисками беда.
>На других серверах есть vm.idlezero_enable: 0 и vm.idlezero_enable: 1. Но нигде это
>руками не включалось и не выключалось. Но такой проблемы не наблюдается.vm.idlezero_enable - это "Allow the kernel to use idle cpu cycles to zero-out pages", поставьте в ноль и поглядите, что получится.
А вот vm.stats.misc.cnt_prezero (The number of physical pages prezeroed at idle time) интересно почему отрицательный. overflow, что ли уже был за 12 дней аптайма. Да и zero_page_count = 0...
Похоже все-таки с ФС проблема. fsck показал много косяков. Спасибо за наводку!
Надо будет просить ДЦ сделать проверку в сингл моде. Это ведь самое правильное решение?А установка vm.idlezero_enable=0 ничего не изменила. Только процесс pagezero исчез из лидеров. Но загрузка осталась прежней.
Вот еще на всякий случай:
sysctl -a | grep vm.stats.vm
vm.stats.vm.v_kthreadpages: 0
vm.stats.vm.v_rforkpages: 0
vm.stats.vm.v_vforkpages: 48798182
vm.stats.vm.v_forkpages: 3476563642
vm.stats.vm.v_kthreads: 46
vm.stats.vm.v_rforks: 0
vm.stats.vm.v_vforks: 26960
vm.stats.vm.v_forks: 612529408
vm.stats.vm.v_interrupt_free_min: 2
vm.stats.vm.v_pageout_free_min: 34
vm.stats.vm.v_cache_max: 27490
vm.stats.vm.v_cache_min: 13745
vm.stats.vm.v_cache_count: 25238
vm.stats.vm.v_inactive_count: 155070
vm.stats.vm.v_inactive_target: 20617
vm.stats.vm.v_active_count: 201769
vm.stats.vm.v_wire_count: 68664
vm.stats.vm.v_free_count: 18046
vm.stats.vm.v_free_min: 3252
vm.stats.vm.v_free_target: 13745
vm.stats.vm.v_free_reserved: 737
vm.stats.vm.v_page_count: 503419
vm.stats.vm.v_page_size: 4096
vm.stats.vm.v_tfree: 1805417550
vm.stats.vm.v_pfree: 3673824360
vm.stats.vm.v_dfree: 1
vm.stats.vm.v_pdpages: 20835032
vm.stats.vm.v_pdwakeups: 1443
vm.stats.vm.v_reactivated: 820679
vm.stats.vm.v_intrans: 214787235
vm.stats.vm.v_vnodepgsout: 0
vm.stats.vm.v_vnodepgsin: 82395
vm.stats.vm.v_vnodeout: 0
vm.stats.vm.v_vnodein: 24597
vm.stats.vm.v_swappgsout: 403
vm.stats.vm.v_swappgsin: 1066
vm.stats.vm.v_swapout: 212
vm.stats.vm.v_swapin: 627
vm.stats.vm.v_ozfod: 488460684
vm.stats.vm.v_zfod: 1393359312
vm.stats.vm.v_cow_optim: 217937
vm.stats.vm.v_cow_faults: 907199325
vm.stats.vm.v_vm_faults: 1465995205
>Похоже все-таки с ФС проблема. fsck показал много косяков. Спасибо за наводку!Не факт, что именно ФС - причина, но может косвенно способствовать...
>Надо будет просить ДЦ сделать проверку в сингл моде. Это ведь самое
>правильное решение?Строго говоря - да. Главное, чтобы раздел был отмонтирован, а этого можно добиться и в обычном режиме, если разогнать все процессы, которые могут использовать данный раздел.
>А установка vm.idlezero_enable=0 ничего не изменила. Только процесс pagezero исчез из лидеров.потому, что мы запретили ему использовать idle-циклы cpu для обнуления страниц памяти.
А после этого % в system так и остался высокий?
да, остался точно таким же.
Хм, просто в том top -S, что вы приводили, pagezero далеко не 0% sys занимал...
А без него что там в top-e? Или даже в top -I, чтобы без idle процессов...
Впрочем, -S можно опустить, необязательно системный процесс будет дергать sys cpu, т.к. даже системный вызов sendfile() или копирование блока на хдд в любом юзерском приложении будет отражаться в sys cpu.По крайней мере всегда есть возможность, если ребут в single user и fsck нежелателен, попробовать глубокой ночью по очереди выключать основные рабочие процессы и следить за sys cpu, вдруг попадется косвенная причина :))
top -S
CPU: 36.6% user, 0.0% nice, 61.5% system, 0.2% interrupt, 1.7% idle
Mem: 874M Active, 543M Inact, 268M Wired, 53M Cache, 212M Buf, 94M Free
Swap: 4045M Total, 100K Used, 4045M FreePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 1 171 52 0K 16K RUN 0 129.8H 3.52% idle: cpu0
10 root 1 171 52 0K 16K RUN 1 121.2H 3.37% idle: cpu1
5724 www 1 4 0 123M 43816K accept 1 4:55 3.32% httpd
5721 www 1 4 0 142M 62904K accept 1 4:49 2.98% httpd
5715 www 1 4 0 121M 41844K accept 1 5:00 2.25% httpd
5729 www 1 4 0 124M 44572K accept 1 4:45 2.20% httpd
952 mysql 36 20 0 513M 208M kserel 0 995:40 1.46% mysqldtop -I
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
5716 www 1 4 0 121M 42208K accept 1 5:03 4.15% httpd
5731 www 1 4 0 128M 48560K accept 0 5:03 4.15% httpd
952 mysql 36 20 0 513M 208M kserel 1 995:46 3.91% mysqld
5730 www 1 4 0 125M 45936K accept 0 5:03 3.76% httpd
5719 www 1 4 0 130M 50672K accept 0 5:11 3.47% httpd
5714 www 1 4 0 123M 43532K accept 1 5:06 3.42% httpd
5720 www 1 4 0 126M 46968K accept 0 4:57 2.54% httpd
5728 www 1 4 0 121M 41716K accept 1 4:51 1.95% httpd
5723 www 1 4 0 125M 45760K accept 1 5:05 1.90% httpdТ.е. все как бы нормально.
Посмотрим что даст fsck если техники в ДЦ сегодня ее сделают.
>Т.е. все как бы нормально.
>Посмотрим что даст fsck если техники в ДЦ сегодня ее сделают.Ну, как бы да, если бы не sys в 60% да еще на двух процах...
Чисто для себя поинтересуюсь, у вас двухядерник или a-la hyper-threading?
А чего апачи такие, эмм, толстоватые? По 40-55мб процесс... Какими модулями вы его нашинковали, если не секрет?
>Чисто для себя поинтересуюсь, у вас двухядерник или a-la hyper-threading?
>А чего апачи такие, эмм, толстоватые? По 40-55мб процесс... Какими модулями вы
>его нашинковали, если не секрет?После проверки диска ситуация нормализовалась.
Проц здесь такой:
CPU: Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz (2194.51-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x6fd Stepping = 13
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0xe39d<SSE3,RSVD2,MON,DS_CPL,EST,TM2,SSSE3,CX16,xTPR,PDCM>
AMD Features=0x20100800<SYSCALL,NX,LM>
AMD Features2=0x1<LAHF>
Cores per package: 2
real memory = 2137522176 (2038 MB)
avail memory = 2051100672 (1956 MB)
ACPI APIC Table: <INTELB R_WATERP>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1А это модули, в принципе все стандартное:
cat /usr/local/etc/apache2/httpd.conf |grep Load
LoadModule rpaf_module libexec/apache2/mod_rpaf.so
LoadModule php5_module libexec/apache2/libphp5.so
LoadModule geoip_module libexec/apache2/mod_geoip.so
LoadModule access_module libexec/apache2/mod_access.so
LoadModule auth_module libexec/apache2/mod_auth.so
LoadModule auth_anon_module libexec/apache2/mod_auth_anon.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
LoadModule asis_module libexec/apache2/mod_asis.so
LoadModule info_module libexec/apache2/mod_info.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule actions_module libexec/apache2/mod_actions.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule mime_module libexec/apache2/mod_mime.so
Большое спасибо вам за помощь!
>[оверквотинг удален]
>vm.stats.misc.zero_page_count: 0
>vm.stats.misc.cnt_prezero: -28686458
>vm.idlezero_maxrun: 16
>vm.idlezero_enable: 1
>security.bsd.map_at_zero: 1
>
>
>На других серверах есть vm.idlezero_enable: 0 и vm.idlezero_enable: 1. Но нигде это
>руками не включалось и не выключалось. Но такой проблемы не наблюдается.
>Да, кстати, а покажите вашу ветку vm.stats.vm.*