[SOLVED] subversion и использование /dev/random в dev-libs/apr
Доброго времени суток!
В последнее время начал замечать что довольно сильно залипает Subversion сервер. Subversion работает через svnserve по протоколу svn.
Путём гугления выяснено что проблема в получении случайных значений для UUID из /dev/random , который генерирует случайные значения с большей энтропией, но делает это медленно. В одном из мануалов Subversion встретил запись что необходимо пересобрать dev-libs/apr с использованием /dev/urandom. У dev-libs/apr как раз нашёлся флаг urandom, который сразу же был ему добавлен и apr, apr-utils и subversion были пересобраны. Но проблема, к сожалению, не решилась. Также если при залипаниях посмотреть в lsof | grep rand становится видно что всё ещё используется /dev/random
svnserve 2343 svn 3r CHR 1,8 0t0 654 /dev/random
configure при выполнении emerge --oneshot apr
./configure --prefix=/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --enable-layout=gentoo --enable-nonportable-atomics --enable-threads --with-devrandom=/dev/urandom
[ebuild R ] dev-libs/apr-1.4.5 USE="urandom uuid -doc -older-kernels-compatibility -static-libs" 0 kB [ebuild R ] dev-vcs/subversion-1.6.17-r7 USE="dso nls python sasl webdav-neon -apache2 -bash-completion -berkdb -ctypes-python -debug -doc -emacs -extras -gnome-keyring -java -kde -perl -ruby -vim-syntax -webdav-serf" 0 kB
В чём может быть причина такого поведения?
Заранее спасибо.
- Для комментирования войдите или зарегистрируйтесь
(*)
Фраза "всё ещё используется /dev/random" означает то, что после пересборки у вас всё ещё работает старая версия кода, которая работала до пересборки. Рестартаните сервисы.
Перезагружал даже машину
Перезагружал даже машину физически. Эффекта 0.
revdep-rebuild и lafilefixer также использовались.
Также, при использовании метода проб и ошибок, был пересобран svn без флагов dso webdav-neon. Но проблему это также не решило.
(*)
Не бросайте в меня камни и протестируйте совет сначала где-то в другом месте (на виртуалке?) но я пару раз наткнулся в сети на совет
http://www.google.com/search?q=rm+dev%2Frandom+ln+%2Fdev%2Furandom+with-devrandom
Ну примерно это сейчас и
Ну примерно это сейчас и сделано в качестве временного решения:
Но костыль жуткий и неправильно это. Радует хотя бы то что это пользовательская машина.
Буду дальше искать способы решения... На subversion 1.7 ситуация та же.
(*)
Я не считаю, что это костыль. Вон во фряхе вообще так и сделано - там /dev/random ведёт себя как линуксовый /dev/urandom, а /dev/urandom во фряхе - просто ссылка на /dev/random.
Итак, проблема решилась.
Итак, проблема решилась. Оказалось ССЗБ. Надо было сделать emerge -uDN world
Оказалось, что у dev-libs/cyrus-sasl также был флаг urandom. Subversion у меня был собран с флагом sasl и, собственно, оттуда и использовался /dev/random.
После обновления мира subversion теперь использует /dev/urandom.
(*)
О как. А я думал в профиле подобное учтено. Добавил urandom в /etc/make.conf и пересобрался. Странно, что это не в профиле.