Feb. 12th, 2015

orleanz: (main)
Я тут такую штуку раскопал! Сейчас расскажу, проблема уже понятна, но решение пока нет. Может что мне подскажите.

Повторю в чем был трабл - Тимсити, первоклассный промышленный билд сервер от блестящих Джет Брейнов - тормозил на 1 (ПЕРВОЙ) строчке серверного лога, вот просто тупо на 3, на 5, на 15 минут, иногда навсегда зависал и фсе, никакой существенной активности ЦПУ, никакого перегруза памяти, никакой существенной сетевой или дисковой активности (cудя по iotop). Но иногда проскакивал эту строчку быстро, и печатал в лог нормальные сообщения, так что общее время старта было около 1 минуты. Но такие счастливые случаи были редки.

Я обратился в Джет Брейнз и они мне посоветовали посмотреть где зависает коммандой jstack. Я им выслал результат, и они сказали, что зависает, скорее всего, потому, что в какой-то момент времени, стандартный Томкат код пытается получить случайное число из /dev/random или /dev/urandom, в зависимости от настроек, но не может его получить, и в результате блокирует все нафиг.

Если кому интересно, то вот то место где происходит этот Адский Фриз

"localhost-startStop-1" daemon prio=10 tid=0x57008c00 nid=0x4cc runnable [0x52ead000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:551)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:139)
at sun.security.provider.SecureRandom$SeederHolder.(SecureRandom.java:197)

Я решил проверить, что это так (что это причина). Я написал на Петоне скрип, который периодически, раз 1 секунду, запускает jstack и ищет эту строку "getSeedBytes".

Потом я запустил в двух консолях, параллельно, две комманды

1. tail -f teamcity-server.log
2. мой чекер

И ТОЧНО! АДСКИЙ ТРЕШ! Когда происходит завис, "getSeedBytes" присутствует в аутпуте jstack. Как только он пропадает там, сразу серверный лог живенько начинает получать нормальные сообщения.

Я даже сделал видеоклип, где показана эта хрень. Разблокировка происходит в районе 3:00

teamcity.freeze from orleans on Vimeo.



Действительно, Томкат не может получить нормальное случайное семя, и блокирует все нафиг!

Проблема детально описана тут http://stackoverflow.com/questions/26227344/oracle-java-8-x64-for-linux-and-randomsource

Теперь вопрос в том, как лечить. В СтекОверфлоу приведено решение - поменять настройки Явы, чтобы вместо блокирующего /dev/random использовать неблокирующий /dev/urandom

Моя проблема - у меня УЖЕ стоит /dev/urandom в настройках
$JAVA_HOME$/lib/security/java.security, параметр "securerandom.source"

То есть рецепт из СО не поможет.

Временное решение такое:
# cat /dev/urandom | head -c 10000000 > /opt/stored.random
а потом установить в файле $JAVA_HOME$/lib/security/java.security
securerandom.source = /opt/stored.random

попробовал. Работает! Сервер запускается с полпинка, ни малейшей задержки на том месте.

Но ведь это криво как-то? Я типа сам сломал секьюрити на своей системе, случайные числа больше не случайные.

Можно конечно перед каждым запуском сервера скриптом писать свеженькие случайные числа в файл. Но это как-то неужклюже.

Как умнее сделать?

ПС. Джет Брейны мне написали, что типа раз это Томкат, то это не их проблема, и порекомендовали обратиться к хостеру (digitalocean).
orleanz: (main)
вот я все думал, что же это мне напоминает, все это мои мучения с Томкатом на Убунте
( http://orleanz.livejournal.com/1906162.html )

что-то я такое уже читал когда-то ...

сейчас вспомнил
http://ivan-gandhi.livejournal.com/2108193.html

" Ну томкат, ну ё, я ж с ним уже больше десяти лет работаю, ну чё с ним случилось-то? Нельзя ли время как-то открутить назад. Ну или седьмой, что ли, ставить. Bit decay. Блин, да не лучше ли будет купить мак и не заморачиваться нахер с этими убунтами, где вечно нычне всё не слава богу. Ну не центос же ставить, боже мой...

Profile

orleanz: (Default)
orleanz

December 2018

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 15th, 2025 12:16 am
Powered by Dreamwidth Studios