Jump to content
Калькуляторы

Подвисает сервер

Есть сервер Debian 6, ядро 2.6.32-5-amd64 .

 

Параметры сервера CPU (Intel Core i7-3770 CPU @ 3.40GHz 8 ядер), Памяти 16 Гб, 2 Диска в RAID0 (2 x 3 TB SATA 6 Gb/s HDD 7200 rpm (Software-RAID 1)) + swap 32 Gb

Другими словами Dedicated Server EX 4 на http://www.hetzner.de

 

На нём поднят nginx+php+mysql.

 

Памяти (потребляется 7гб из 16), процессора и дисков хватает с лихвой. Но где-то через пару дней что-то выедает почти всю память (свободно остаётся где-то 500 мб). А ещё через некоторое время сервер просто уходит в себя: сеть недоступна, Cron-задания невыполняются, то есть наступает полный ступор.

Перегрузить через панель управления - не получается. Только через тикет (они сами каким-то ручным образом его перегружают), при этом, в ребут по логам уходит вроде бы корректно.

 

Поддержка в hetzner отвечает стандартными фразами - понятия не имеем, и можем взять сервер на диагностику на сутки. И им по-барабану, что сервер в продакшине.

 

Поставил cacti, думал смогу уловить момент, но LA, mem - не скакали в тот момент. Хотя агент snmp мог это и не уловить.

 

Отключил сейчас все изменения в sysct.conf, limit.conf и пока наблюдаю.

 

Может кто с таким сталкивался? Остался ещё 1 вариант - обновить ядро до версии 3.2, если опять зависнет.

Share this post


Link to post
Share on other sites

Была аналогичная проблема на более чем на 50 серверах на ядре 2.6.35, после недели работы сервер съедал гигов 30 памяти, причем убийство процессов не помогало. Решилось обновлением ядра до 3.0.28

Share this post


Link to post
Share on other sites

А ps, к примеру, молчит как партизан и не сдает того кто память ест? если не успеваете зайти до момента когда уже не пускает, то поставьте atop, он историю писать умеет.

Share this post


Link to post
Share on other sites

ps ничего необычного не выводит, top/htop показывает те же цифры, что и до. Даже рестарт указанных служб не освобождает память. Значит, дело скорее всего не в них. Касательно atop - идея хорошая, попробую.

Share this post


Link to post
Share on other sites

в топе жмакнуть m (или M) и посмотреть, кто кушает.

еще сделать cat /proc/meminfo

по результатам уже можно будет что-то сказать...

Share this post


Link to post
Share on other sites

Делал, но цифры не сходятся всё равно. имеется ввиду, из top/htop. Через /proc/meminfo -

MemTotal:       16160948 kB
MemFree:          502892 kB
Buffers:          178412 kB
Cached:          7436540 kB
SwapCached:            0 kB
Active:          1929572 kB
Inactive:        6153940 kB
Active(anon):     435528 kB
Inactive(anon):    48180 kB
Active(file):    1494044 kB
Inactive(file):  6105760 kB
Unevictable:     7269972 kB
Mlocked:         7269972 kB
SwapTotal:      33553328 kB
SwapFree:       33553328 kB
Dirty:               540 kB
Writeback:             0 kB
AnonPages:       7738528 kB
Mapped:            27152 kB
Shmem:               832 kB
Slab:             196436 kB
SReclaimable:     174656 kB
SUnreclaim:        21780 kB
KernelStack:        2288 kB
PageTables:        29200 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    49714276 kB
Committed_AS:    8025824 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      122432 kB
VmallocChunk:   34359610132 kB

Смущает вот это

Unevictable: 7269972 kB

Mlocked: 7269972 kB

Share this post


Link to post
Share on other sites

Mlocked - то, что заблокировано от своппироваиня вызовом mlock(), 7 гиг - многовато как-то...

7.5 гиг ушло под кеш, ядро откушало 200 метров.

Share this post


Link to post
Share on other sites

Вот, обновил даже php до 5.3.18, но утечки продолжаются. Жду момента, когда будет КВМ и обновлю ядро. Можно и без КВМа, но всё равно стрёмновато.

Share this post


Link to post
Share on other sites

Очень странно другое:

# 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      0 498512 193808 7487920    0    0     9    10   45    2  2  1 97  0
2  0      0 498552 193808 7487920    0    0     0     6  526  696  1  0 99  0
2  0      0 498460 193816 7487924    0    0     0   202  580 4829  3  0 96  0
0  0      0 497576 193816 7487928    0    0     0    20  642 1285  6  1 93  0
0  0      0 497216 193816 7487932    0    0     0     8  462 2894  2  0 98  0

# monit status all | tail -8
System 'server.com.ua'
 status                            running
 monitoring status                 monitored
 load average                      [0.48] [0.31] [0.22]
 cpu                               3.0%us 0.3%sy 0.1%wa
 memory usage                      7984884 kB [49.4%]
 data collected                    Wed Oct 24 16:56:41 2012

Почему через vmstat и через monit разные показания?

Share this post


Link to post
Share on other sites

Что сделал

- обновил ядро до 3.2

- отключил полностью swap

- отключил всё в sysctl

- изменил распределение памяти:

vm.overcommit_ratio=100

vm.overcommit_memory=2

 

Пока наблюдаю.

Share this post


Link to post
Share on other sites

kernel.panic = 5

kernel.panic_on_oops = 1

kernel.panic_on_stackoverflow = 1

kernel.panic_on_unrecovered_nmi = 1

kernel.unknown_nmi_panic = 1

vm.panic_on_oom = 1

 

Я бы сделал так, и поднял бы netconsole,на случай если oops не в сетевой подсистеме.

Хоть сервер к жизни вернется сам.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.