На сервере Hudson, используемом разработчиками, возникают проблемы с тайм-аутом.
Всякий раз, когда Java компилируется (git проверяет модули, классы java компилируются, тестируются и копируются в Nexus), в процессе что-то идет не так, и все перестает отвечать.
Я могу смотреть iotop, например, в течение первых 15-30 секунд, максимальная скорость достигает 3 Мбит / с, а затем внезапно top перестает обновляться, и я больше ничего не могу делать. То же самое для SNMP, каждый запрос SNMP приводит к тайм-ауту.
Я также не могу войти в ssh, а ввод простой команды типа «w» в открытом терминале занимает время (5+ минут), чтобы получить результат.
Это сервер Debian (довольно стандартная установка, на нем нет ничего лишнего).
Это виртуальная машина, работающая на хосте XenServer. Он имеет выделенную память 4 ГБ и 8 ядер (4 физических ядра + HT).
XenCenter сообщает о 13% загрузке ЦП (что составляет 100% на одно ядро). Использование диска низкое, и объем памяти также не достигает пика (он остается на уровне около 3 Гб из использованных 4 Гб, своп остается пустым).
Это вывод 'w' сразу после того, как он снова станет отзывчивым:
$ w
12:02:31 up 10 days, 19:45, 4 users, load average: 32.13, 25.42, 15.32
Так что да, средняя загрузка системы довольно высока ... Но даже 3200 кажется не такой уж высокой.
Это также не происходит каждый раз, когда он что-то строит.
Мой вопрос: есть ли способ взять образец данных и посмотреть, что заставляет все зависать, и даже если Java монополизирует одно ядро, на сервере 7 неиспользуемых ядер, почему он не реагирует на любой ввод (поскольку использование ввода-вывода кажется низким тоже и не хватает памяти)?
Редактировать:
vmstat 1 вывод:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 0 940 725336 235388 1444280 0 0 0 0 2048 578 14 8 79 0
5 0 940 702704 235392 1444296 0 0 0 200 3088 1691 8 8 81 3
2 0 940 701480 235392 1444296 0 0 0 4 2116 658 13 7 80 0
3 0 940 699480 235392 1444296 0 0 0 68 2688 1108 10 7 82 1
2 0 940 657732 235396 1444292 0 0 0 244 4639 3412 11 5 81 2
0 2 940 648872 235408 1451840 0 0 0 6616 5283 4573 11 3 79 6
0 2 940 645696 235412 1455296 0 0 0 4436 1257 1134 3 1 74 22
1 1 940 635064 235424 1465320 0 0 0 6940 3117 2653 6 1 87 6
0 1 940 632792 235448 1466592 0 0 0 9236 610 405 2 1 81 16
1 1 940 631464 235448 1466660 0 0 0 9524 1580 852 4 3 73 20
1 1 940 633428 235448 1466660 0 0 0 9120 2931 1250 1 6 82 11
3 0 940 620844 235540 1467496 0 0 0 48 2249 1368 16 4 80 0
3 1 940 590080 235544 1467552 0 0 0 1632 2322 918 9 10 76 6
4 0 940 538072 235544 1467552 0 0 0 28 2159 2364 15 7 77 1
5 0 940 489588 235548 1467836 0 0 0 1412 1745 663 16 5 76 2
7 0 940 402368 235548 1467996 0 0 0 0 2573 882 16 7 77 0
3 0 940 371424 235560 1468128 0 0 0 20 2235 744 14 7 79 0
4 0 940 265660 235568 1467840 0 0 0 0 2181 826 13 6 82 0
4 0 940 257360 235604 1468588 0 0 0 0 1718 705 14 6 81 0
3 0 940 193800 235628 1468124 0 0 0 1312 2164 1096 12 5 80 3
** зависает после этого **
PS как раз когда стало отзывчивый очередной раз.
develop@Yong:/opt/develop/tomcat7-develop/bin$ ps -HAf
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 Jan21 ? 00:00:00 [kthreadd]
root 3 2 0 Jan21 ? 00:00:00 [migration/0]
root 4 2 0 Jan21 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 Jan21 ? 00:00:00 [watchdog/0]
root 6 2 0 Jan21 ? 00:00:00 [migration/1]
root 7 2 0 Jan21 ? 00:00:00 [ksoftirqd/1]
root 8 2 0 Jan21 ? 00:00:00 [watchdog/1]
root 9 2 0 Jan21 ? 00:00:00 [migration/2]
root 10 2 0 Jan21 ? 00:00:00 [ksoftirqd/2]
root 11 2 0 Jan21 ? 00:00:00 [watchdog/2]
root 12 2 0 Jan21 ? 00:00:00 [migration/3]
root 13 2 0 Jan21 ? 00:00:00 [ksoftirqd/3]
root 14 2 0 Jan21 ? 00:00:00 [watchdog/3]
root 15 2 0 Jan21 ? 00:00:01 [migration/4]
root 16 2 0 Jan21 ? 00:00:00 [ksoftirqd/4]
root 17 2 0 Jan21 ? 00:00:00 [watchdog/4]
root 18 2 0 Jan21 ? 00:00:02 [migration/5]
root 19 2 0 Jan21 ? 00:00:00 [ksoftirqd/5]
root 20 2 0 Jan21 ? 00:00:00 [watchdog/5]
root 21 2 0 Jan21 ? 00:00:01 [migration/6]
root 22 2 0 Jan21 ? 00:00:00 [ksoftirqd/6]
root 23 2 0 Jan21 ? 00:00:00 [watchdog/6]
root 24 2 0 Jan21 ? 00:00:00 [migration/7]
root 25 2 0 Jan21 ? 00:00:00 [ksoftirqd/7]
root 26 2 0 Jan21 ? 00:00:00 [watchdog/7]
root 27 2 0 Jan21 ? 00:00:00 [events/0]
root 28 2 0 Jan21 ? 00:01:04 [events/1]
root 29 2 0 Jan21 ? 00:00:00 [events/2]
root 30 2 0 Jan21 ? 00:00:00 [events/3]
root 31 2 0 Jan21 ? 00:00:00 [events/4]
root 32 2 0 Jan21 ? 00:00:00 [events/5]
root 33 2 0 Jan21 ? 00:00:00 [events/6]
root 34 2 0 Jan21 ? 00:00:00 [events/7]
root 35 2 0 Jan21 ? 00:00:00 [cpuset]
root 36 2 0 Jan21 ? 00:00:00 [khelper]
root 37 2 0 Jan21 ? 00:00:00 [netns]
root 38 2 0 Jan21 ? 00:00:00 [async/mgr]
root 39 2 0 Jan21 ? 00:00:00 [pm]
root 40 2 0 Jan21 ? 00:00:00 [xenwatch]
root 41 2 0 Jan21 ? 00:00:00 [xenbus]
root 42 2 0 Jan21 ? 00:00:00 [sync_supers]
root 43 2 0 Jan21 ? 00:00:00 [bdi-default]
root 44 2 0 Jan21 ? 00:00:00 [kintegrityd/0]
root 45 2 0 Jan21 ? 00:00:00 [kintegrityd/1]
root 46 2 0 Jan21 ? 00:00:00 [kintegrityd/2]
root 47 2 0 Jan21 ? 00:00:00 [kintegrityd/3]
root 48 2 0 Jan21 ? 00:00:00 [kintegrityd/4]
root 49 2 0 Jan21 ? 00:00:00 [kintegrityd/5]
root 50 2 0 Jan21 ? 00:00:00 [kintegrityd/6]
root 51 2 0 Jan21 ? 00:00:00 [kintegrityd/7]
root 52 2 0 Jan21 ? 00:00:00 [kblockd/0]
root 53 2 0 Jan21 ? 00:00:00 [kblockd/1]
root 54 2 0 Jan21 ? 00:00:00 [kblockd/2]
root 55 2 0 Jan21 ? 00:00:00 [kblockd/3]
root 56 2 0 Jan21 ? 00:00:00 [kblockd/4]
root 57 2 0 Jan21 ? 00:00:00 [kblockd/5]
root 58 2 0 Jan21 ? 00:00:00 [kblockd/6]
root 59 2 0 Jan21 ? 00:00:00 [kblockd/7]
root 60 2 0 Jan21 ? 00:00:00 [kseriod]
root 69 2 0 Jan21 ? 00:00:00 [kondemand/0]
root 70 2 0 Jan21 ? 00:00:00 [kondemand/1]
root 71 2 0 Jan21 ? 00:00:00 [kondemand/2]
root 72 2 0 Jan21 ? 00:00:00 [kondemand/3]
root 73 2 0 Jan21 ? 00:00:00 [kondemand/4]
root 74 2 0 Jan21 ? 00:00:00 [kondemand/5]
root 75 2 0 Jan21 ? 00:00:00 [kondemand/6]
root 76 2 0 Jan21 ? 00:00:00 [kondemand/7]
root 77 2 0 Jan21 ? 00:00:00 [khungtaskd]
root 78 2 0 Jan21 ? 00:00:00 [kswapd0]
root 79 2 0 Jan21 ? 00:00:00 [ksmd]
root 80 2 0 Jan21 ? 00:00:00 [aio/0]
root 81 2 0 Jan21 ? 00:00:00 [aio/1]
root 82 2 0 Jan21 ? 00:00:00 [aio/2]
root 83 2 0 Jan21 ? 00:00:00 [aio/3]
root 84 2 0 Jan21 ? 00:00:00 [aio/4]
root 85 2 0 Jan21 ? 00:00:00 [aio/5]
root 86 2 0 Jan21 ? 00:00:00 [aio/6]
root 87 2 0 Jan21 ? 00:00:00 [aio/7]
root 88 2 0 Jan21 ? 00:00:00 [crypto/0]
root 89 2 0 Jan21 ? 00:00:00 [crypto/1]
root 90 2 0 Jan21 ? 00:00:00 [crypto/2]
root 91 2 0 Jan21 ? 00:00:00 [crypto/3]
root 92 2 0 Jan21 ? 00:00:00 [crypto/4]
root 93 2 0 Jan21 ? 00:00:00 [crypto/5]
root 94 2 0 Jan21 ? 00:00:00 [crypto/6]
root 95 2 0 Jan21 ? 00:00:00 [crypto/7]
root 98 2 0 Jan21 ? 00:00:00 [khvcd]
root 408 2 0 Jan21 ? 00:00:06 [kjournald]
root 906 2 0 Jan21 ? 00:00:03 [flush-202:16]
root 1111 2 0 Jan21 ? 00:00:00 [kslowd000]
root 1112 2 0 Jan21 ? 00:00:00 [kslowd001]
root 1119 2 0 Jan21 ? 00:00:00 [cifsd]
root 1 0 0 Jan21 ? 00:00:00 init [2]
root 480 1 0 Jan21 ? 00:00:00 udevd --daemon
daemon 1129 1 0 Jan21 ? 00:00:00 /sbin/portmap
statd 1140 1 0 Jan21 ? 00:00:00 /sbin/rpc.statd
root 1236 1 0 Jan21 ? 00:00:01 /usr/sbin/rsyslogd -c3
root 1283 1 0 Jan21 ? 00:00:27 /bin/bash /usr/sbin/xe-daemon
root 22213 1283 0 13:57 ? 00:00:00 sleep 60
root 1358 1 0 Jan21 ? 00:00:00 /usr/sbin/sshd
root 18625 1358 0 13:33 ? 00:00:00 sshd: yeri [priv]
yeri 18628 18625 0 13:33 ? 00:00:00 sshd: yeri@pts/0
yeri 18629 18628 0 13:33 pts/0 00:00:00 -bash
root 18647 18629 0 13:33 pts/0 00:00:00 su -
root 18648 18647 0 13:33 pts/0 00:00:00 -su
root 19357 18648 0 13:45 pts/0 00:00:00 vmstat 1
root 19124 1358 0 13:44 ? 00:00:00 sshd: develop [priv]
develop 19127 19124 0 13:44 ? 00:00:00 sshd: develop@pts/1
develop 19128 19127 0 13:44 pts/1 00:00:00 -bash
develop 22174 19128 0 13:57 pts/1 00:00:00 ps -HAf
root 22163 1358 0 13:53 ? 00:00:00 sshd: andy [priv]
andy 22166 22163 0 13:54 ? 00:00:00 sshd: andy@pts/2
andy 22167 22166 0 13:54 pts/2 00:00:00 -bash
andy 22216 22167 0 13:57 pts/2 00:00:00 -bash
andy 22217 22216 0 13:57 pts/2 00:00:00 [sed]
andy 22218 22216 0 13:57 pts/2 00:00:00 -bash
root 1677 1 0 Jan21 ? 00:00:00 nginx: master process /usr/sbi
www-data 1678 1677 0 Jan21 ? 00:00:00 nginx: worker process
snmp 1686 1 0 Jan21 ? 00:02:15 /usr/sbin/snmpd -Lsd -Lf /dev/
ntp 1700 1 0 Jan21 ? 00:00:00 /usr/sbin/ntpd -p /var/run/ntp
daemon 1718 1 0 Jan21 ? 00:00:00 /usr/sbin/atd
root 1739 1 0 Jan21 ? 00:00:02 /usr/sbin/cron
root 22159 1739 0 13:50 ? 00:00:00 /USR/SBIN/CRON
root 22161 22159 0 13:50 ? 00:00:00 /usr/bin/perl -w /usr/bin/
root 22214 22161 0 13:57 ? 00:00:00 [rateup]
daemon 1763 1 0 Jan21 ? 00:00:03 /usr/sbin/uptimed
root 1765 1 0 Jan21 tty2 00:00:00 /sbin/getty 38400 tty2
root 1766 1 0 Jan21 tty3 00:00:00 /sbin/getty 38400 tty3
root 1767 1 0 Jan21 tty4 00:00:00 /sbin/getty 38400 tty4
root 1768 1 0 Jan21 tty5 00:00:00 /sbin/getty 38400 tty5
root 1769 1 0 Jan21 tty6 00:00:00 /sbin/getty 38400 tty6
104 7240 1 0 Jan24 ? 00:00:00 /usr/bin/dbus-daemon --system
avahi 7269 1 0 Jan24 ? 00:00:00 avahi-daemon: running [Yong.lo
avahi 7270 7269 0 Jan24 ? 00:00:00 avahi-daemon: chroot helper
101 423 1 0 Jan31 ? 00:00:00 /usr/sbin/exim4 -bd -q30m
root 6799 1 0 Jan31 hvc0 00:00:00 /sbin/getty 38400 hvc0
root 1915 1 0 06:25 ? 00:00:01 /usr/bin/atop -a -w /var/log/a
root 19181 1 0 13:45 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 19218 19181 0 13:45 pts/0 00:00:03 /usr/sbin/mysqld --basedir=/
root 19219 19181 0 13:45 pts/0 00:00:00 logger -p daemon.err -t mysq
develop 19304 1 99 13:45 pts/1 66-17:02:10 /opt/develop/java/jdk/bin/j
develop 19457 19304 99 13:46 pts/1 373-12:31:17 /opt/develop/java/jdk1.6
develop 22219 19457 0 13:57 pts/1 00:00:00 [java]
develop 21193 19304 99 13:47 pts/1 26-16:29:39 /opt/develop/java/jdk1.6.
develop 22145 19304 0 13:48 pts/1 00:00:00 git fetch -t ssh://git@git.m
develop 22148 22145 0 13:48 pts/1 00:00:00 ssh git@git.miiatech.com g
develop 22215 22145 0 13:57 pts/1 00:00:00 [git]
вывод "w" здесь не очень помогает. Пожалуйста, опубликуйте вывод "vmstat 1" в течение первых 15-30 секунд, это дает гораздо более глубокое понимание. Сколько файлов в вашем Java-проекте? Все ли доступно локально? Или Хадсон проверяет материал откуда-то еще или копирует что-то из сети?
Проблема, похоже, была вызвана опросом Git (он был установлен каждую минуту). Сейчас меняется на каждые 10 минут, и сейчас нагрузка близка к нулю.
Это действительно похоже на то, что ваш сервер съедает всю память и начинает свопинг. Вы уверены в использовании памяти при компиляции? Javac легко съедает несколько гигов ... Я бы держал ТОП и проверял, сколько памяти используется в процессе сборки. Как только сервер начинает пережевывать диск из-за активных процессов, он обычно не отвечает, но вы часто можете видеть увеличение использования памяти, пока сервер не начнет подкачку
Еще один простой способ проверить это - отключить подкачку:
swapoff /dev/sda2 (or whatever your swap partition is called)
А затем попробуйте сборку. Если у вас заканчивается память, сборка скорее всего умрет на полпути. Также возможно, что другой процесс, потребляющий много памяти, будет убит OOM Killer в Linux.
Вы запускаете Hudson как отдельное приложение или внутри веб-контейнера? грамм. Кот?
Одна мысль, которая приходит в голову, - это выделение памяти для вашего Java-процесса. Если вы не указали дополнительные параметры памяти для JVM (Параметры -Xms и -Xmx) может случиться так, что JVM работает со значением по умолчанию 65M, и в этот момент включается сборка мусора и останавливает вашу систему.
Если у вас есть возможность проверить свои параметры времени выполнения (ваш вывод «ps», приведенный выше, усечен справа, поэтому я не могу видеть самостоятельно), вы можете проверить, является ли это основной причиной. Если это так, вы можете захотеть добавить больше памяти к процессу и посмотреть, останавливается ли он по-прежнему в таком сценарии.
Проверьте, есть ли у вас какие-либо процессы в состоянии "D" (Бесперебойный сон):
# ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'