JVM зависает с ожиданием 100 IO на Ubuntu Maverick (экземпляр AWS EC2 xlarge)

Иметь экземпляр xlarge в AWS с 9 Tomcats с кучей от 256M до 4G. В Ubuntu 10.04 коробка спорадически зависает на несколько часов с огромной очередью выполнения (30-40) и ничего на процессоре, затем восстанавливается. Подозревал GC, но упрекал как с, так и без CMS GC.

После обновления до 10.10 машина переходит в режим ожидания на 100% через несколько часов после запуска, снова без каких-либо процессов на процессоре. Вот вывод сверху:

top - 18:33:44 up  3:11,  2 users,  load average: 26.99, 26.80, 25.82
Tasks: 126 total,   1 running, 125 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,100.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  15373736k total, 15174780k used,   198956k free,    51288k buffers
Swap:        0k total,        0k used,        0k free,  6208956k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       
 5910 tomcat6   20   0  746m 361m 9872 S    0  2.4   2:01.32 java                                                                           
10147 tomcat6   20   0  919m 173m 9.8m S    0  1.2   0:22.60 java                                                                           
12328 ubuntu    20   0 19276 1320  968 R    0  0.0   0:01.41 top                                                                            
    1 root      20   0 23864 2012 1300 S    0  0.0   0:00.38 init                                                                           
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd    
...

Ничего полезного в журнале GC (в больших случаях, с MarkSweep, основной GC происходит каждые 5 минут и занимает ~4 с, инкрементное завершение в.1 - .2 с, много свободной памяти во всех поколениях).

Вот вывод dstat:

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  5   1  51  43   0   0|  63k  512k|   0     0 |   0     0 | 435   401 
  0   0   0 100   0   0|   0     0 |  52B  834B|   0     0 | 185   315 
  0   0   0 100   0   0|   0     0 |4997B   14k|   0     0 | 247   360 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 146   318 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 149   314 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 145   318 
  0   0   0 100   0   0|   0     0 |4997B   14k|   0     0 | 227   345 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 158   325 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 160   306 
  0   0   0 100   0   0|   0     0 |  52B  354B|   0     0 | 148   319 
  0   0   0 100   0   0|   0     0 |4619B   14k|   0     0 | 224   353

В то время, когда ожидание начало расти, это было в конце загрузки / анализа множества больших файлов из s3 и записи их локально на диск (хранилище экземпляров). Дамп потока (на jconsole, не может убить -3 на коробке - зависает), показывает один поток, заблокированный при записи на диск.

Я потерян. Какой камень повернуть дальше? Что здесь может происходить?

0 ответов

Другие вопросы по тегам