Прерывистые пики ЦП на экземплярах EC2 - PullRequest
0 голосов
/ 22 января 2019

У нас есть веб-приложение, которое работает в AWS Elastic Beanstalk и использует Java в качестве бэкэнда. Периодически происходит сбой одного сервера приложений за балансировщиком нагрузки из-за того, что процессор используется на 100%. После некоторого анализа у меня есть основания полагать, что основная ОС может сыграть роль в этой проблеме.

Вот фрагмент из файла / var / log / messages с точкой, где ядро ​​ловит ошибку:

Jan  3 22:50:11 ip-10-220-46-44 kernel: [22649903.665305] ------------[ cut here ]------------
Jan  3 22:50:11 ip-10-220-46-44 kernel: [22649903.676120] WARNING: CPU: 0 PID: 12578 at fs/dcache.c:361 d_shrink_del+0x71/0x80()
Jan  3 22:50:11 ip-10-220-46-44 kernel: [22649903.680845] Modules linked in: ipv6 binfmt_misc evbug evdev psmouse i2c_piix4 ixgbevf i2c_core button ext4 crc16 jbd2 mbcache dm_mirror dm_region_hash dm_log dm_mod
Jan  3 22:50:11 ip-10-220-46-44 kernel: [22649903.691804] CPU: 0 PID: 12578 Comm: lsof Not tainted 3.14.48-33.39.amzn1.x86_64 #1
Jan  3 22:50:11 ip-10-220-46-44 kernel: [22649903.696742] Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.700879]  0000000000000009 ffff880037dc1c90 ffffffff81487535 0000000000000000
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.706058]  ffff880037dc1cc8 ffffffff8105d39d ffff8800147b33c0 ffff880037dc1d48
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.711346]  ffff8800147b3418 ffff8800147b33c0 ffff8800147b33c0 ffff880037dc1cd8
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.716450] Call Trace:
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.718151]  [<ffffffff81487535>] dump_stack+0x45/0x56
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.721634]  [<ffffffff8105d39d>] warn_slowpath_common+0x7d/0xa0
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.725658]  [<ffffffff8105d47a>] warn_slowpath_null+0x1a/0x20
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.729562]  [<ffffffff811bc601>] d_shrink_del+0x71/0x80
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.732957]  [<ffffffff811bda24>] shrink_dentry_list+0x64/0xe0
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.736748]  [<ffffffff811be868>] shrink_dcache_parent+0x28/0x70
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.740689]  [<ffffffff8120fdf6>] proc_flush_task+0xa6/0x190
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.744318]  [<ffffffff8105e190>] release_task+0x30/0x450
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.748305]  [<ffffffff810946e1>] ? thread_group_cputime_adjusted+0x41/0x50
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.752971]  [<ffffffff8105ee7b>] wait_consider_task+0x8cb/0xb00
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.757236]  [<ffffffff8105f1b0>] do_wait+0x100/0x240
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.760681]  [<ffffffff810602e4>] SyS_wait4+0x64/0xe0
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.764026]  [<ffffffff8105def0>] ? task_stopped_code+0x60/0x60
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.768138]  [<ffffffff81496fc9>] system_call_fastpath+0x16/0x1b
Jan  3 22:50:12 ip-10-220-46-44 kernel: [22649903.772147] ---[ end trace e3b4a7d896ae3cba ]---
Jan  3 22:51:11 ip-10-220-46-44 kernel: [22649962.676054] INFO: rcu_sched self-detected stall on CPU
Jan  3 22:51:11 ip-10-220-46-44 kernel: [22649962.676054]       0: (14747 ticks this GP) idle=f7d/140000000000001/0 softirq=400397332/400397344
Jan  3 22:51:11 ip-10-220-46-44 kernel: [22649962.676054]        (t=14750 jiffies g=44792585 c=44792584 q=188767)

Через несколько часов OOM-killer входит:

Jan  4 00:30:55 ip-10-220-46-44 kernel: [22655946.486183] Out of memory: Kill process 2776 (java) score 654 or sacrifice child

Как видите, OOM-killer выбирает процесс Java и убивает его. В этот момент он потребляет приблизительно. 1,5 Гб оперативной памяти. Это ниже 2 Гб кучи, выделенной с помощью флага -Xmx. Вскоре после этого наше веб-приложение перезагружается несколько раз, пока загрузка процессора не достигнет 100%. Версия ядра ОС 3.14.48-33.39.amzn1.x86_64.

Мой вопрос: Основываясь на приведенной выше информации, как вы думаете, эта проблема вызвана ОС? Я вижу строку журнала CPU: 0 PID: 12578 Comm: lsof Not tainted 3.14.48-33.39.amzn1.x86_64 #1 и думаю, что это может быть проблема с утилитой lsof из нашего текущего дистрибутива.

Любая помощь будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...