Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Solved] Жуткие тормоза (подвисания) subversion
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Tue Mar 11, 2008 1:59 pm    Post subject: [Solved] Жуткие тормоза (подвисания) subversion Reply with quote

Дано:
Свежеустановленный Gentoo, ext3, subversion 1.4.5, затем 1.4.6, затем 1.4.6-r1.

Отклик от сервера резвый, пакеты не пропадают, fs так же работает нормально. Однако после авторизации, в случае успеха (при неудаче такого нет) иногда сервер откликается лишь спустя несколько минут (!), что, разумеется, очень не радует девелоперов. Причем это касается любой команды. Например "svn ls svn://domain.name". Ресолвится доменное имя моментально, с этим проблем нет. В логах пусто. Загрузка сервера практически нулевая.

Что пробовал (без результата):
- компилировать без поддержки perl и python;
- компилировать с поддержкой BDB (и создавать в BDB репозитарий);
- компилировать с nowebdav (на всякий случай :)).
Сейчас subversion скомпилирован с USE="berkdb nls perl python svnserve vim-syntax -apache2 -bash-completion -debug -doc -emacs -extras -java -nowebdav -ruby"

Может кто сталкивался? Есть какие-нибудь идеи?


PS. У друга на openSuSE 10.3 с svn 1.4.6, кстати, такого нет.


Last edited by dragon1020 on Thu Mar 13, 2008 2:45 pm; edited 1 time in total
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Mar 12, 2008 2:24 am    Post subject: Reply with quote

Запустить apache под strace?..
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Wed Mar 12, 2008 8:28 am    Post subject: Reply with quote

Laitr Keiows wrote:
Запустить apache под strace?..

А апач тут при чем?.. Или имелся в виду subversion?
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Wed Mar 12, 2008 8:38 am    Post subject: Reply with quote

dragon1020 wrote:
А апач тут при чем?.. Или имелся в виду subversion?

Да, svnserve
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Wed Mar 12, 2008 10:33 am    Post subject: Reply with quote

Попробовал, поковырял полученный лог, ничего умного не нашел (к тому же svnserve порождает новые процессы при новом коннекте, которые не отслеживаются strace'ом). Однако выяснил, что на моей домашней машине такого не происходит. Правда платформы разные - дома amd64, на сервере x86.
Думал, может с RDNS какие-то тормоза на сервере - нет.
Больше пока идей нет.

Забыл сказать - загрузка проца и кол-во памяти на машине в момент подвисания в норме. И еще - первый коннект проходит удачно (вроде всегда, по крайней мере после рестарта svnserve).

Laitr Keiows, спасибо за идею с strace.
Back to top
View user's profile Send private message
calculator
Apprentice
Apprentice


Joined: 16 Oct 2006
Posts: 183
Location: Russia, Moscow

PostPosted: Wed Mar 12, 2008 12:25 pm    Post subject: Reply with quote

Если не ошибаюсь порожденные процессы опцией -f видно. Посмотри доку по strace.
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Wed Mar 12, 2008 5:17 pm    Post subject: Reply with quote

calculator, спасибо, не знал, что так возможно.

Однако для меня ситуация яснее не стала.

Вот как проходит нормальная сессия:
Code:
[pid 24693] open("/var/svn/conf/svnserve.conf", O_RDONLY|O_LARGEFILE) = 3
[pid 24693] read(3, "### This file controls the confi"..., 16384) = 1089
[pid 24693] read(3, "", 15295)          = 0
[pid 24693] read(3, "", 16384)          = 0
[pid 24693] close(3)                    = 0
[pid 24693] open("/var/svn/conf/passwd", O_RDONLY|O_LARGEFILE) = 3
[pid 24693] read(3, "### This file is an example pass"..., 16384) = 1677
[pid 24693] read(3, "", 14707)          = 0
[pid 24693] read(3, "", 16384)          = 0
[pid 24693] close(3)                    = 0
[pid 24693] write(4, "( success ( ( CRAM-MD5 ) 36:f9bc"..., 69) = 69
[pid 24693] read(4, "( CRAM-MD5 ( ) ) ", 4096) = 17
[pid 24693] open("/dev/random", O_RDONLY) = 3
[pid 24693] read(3, ";n\351\267\326\365o]", 8) = 8
[pid 24693] close(3)                    = 0
и т.д.


Когда возникают тормоза, все останавливается на:
Code:
pid 24693] write(4, "( success ( ( CRAM-MD5 ) 36:f9bc"..., 69) = 69
[pid 24693] read(4, "( CRAM-MD5 ( ) ) ", 4096) = 17
[pid 24693] open("/dev/random", O_RDONLY) = 3
[pid 24693] read(3,

и, после нескольких минут, все продолжается.
Почему так происходит - для меня загадка (не программер).
Back to top
View user's profile Send private message
calculator
Apprentice
Apprentice


Joined: 16 Oct 2006
Posts: 183
Location: Russia, Moscow

PostPosted: Wed Mar 12, 2008 6:43 pm    Post subject: Reply with quote

Quote:
В ядре Linux реализован генератор случайных чисел, который теоретически мо-
жет генерировать истинно случайные числа. Генератор случайных чисел собира-
ет в пул энтропии шумы внешней среды, которые поступают из драйверов устройств.
Этот пул доступен как в ядре, так и для пользовательских процессов в качестве ис-
точника данных, которые не только случайны внутри системы, но и недетерминиро-
ваны для внешних источников атак. Такие случайные числа используются различны-
ми внешними приложениями, особенно для целей криптографии.


Пул энтропии пустой ;-) Не очень хорошо, но если можно как-то /dev/urandom использовать - думаю поможет. +можно погуглить.
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Thu Mar 13, 2008 11:09 am    Post subject: Reply with quote

calculator, спасибо, попробую копать в этом направлении. :)

Ты абсолютно прав:
# dd if=/dev/random of=/dev/null bs=1024 count=1
0+1 records in
0+1 records out
8 bytes (8 B) copied, 164.63 s, 0.0 kB/s

urandom работает нормально. Возможно просто сделаю симлинк на urandom, подумаю еще как бы нормально сделать.

Еще раз спасибо огромное.
Back to top
View user's profile Send private message
calculator
Apprentice
Apprentice


Joined: 16 Oct 2006
Posts: 183
Location: Russia, Moscow

PostPosted: Thu Mar 13, 2008 11:46 am    Post subject: Reply with quote

Вот чего чего а симлинк делать не советую - гуглить вот советую :-)
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Thu Mar 13, 2008 12:27 pm    Post subject: Reply with quote

calculator, почему? Работает прекрасно. Симлинк создается через udev, так что при ребуте все ок.
А погуглю обязательно, как только времени чуть больше появится. Пока то, что находил, мне не нравилось (лезть в исходники - не для меня, как я уже говорил, не программер). К тому же я думаю так - раз были подвисания subversion, значит может еще найтись какая-то тулза, которая так же будет подвисать при обращении к /dev/random.
Back to top
View user's profile Send private message
calculator
Apprentice
Apprentice


Joined: 16 Oct 2006
Posts: 183
Location: Russia, Moscow

PostPosted: Thu Mar 13, 2008 2:08 pm    Post subject: Reply with quote

Да костыль имхо это... теоретический ;-) Но как его _правильно_ бороть если с /dev/random так быстро данные разбираются - непонятно.
Back to top
View user's profile Send private message
dragon1020
n00b
n00b


Joined: 07 Jul 2006
Posts: 58
Location: Moscow, Russia

PostPosted: Thu Mar 13, 2008 2:45 pm    Post subject: Reply with quote

calculator, может из-за ssh? Канал-то криптуется... Но, имхо, главное - все работает. :) Причем работает и моя машина (сначала на ней опробовал), и сервер.
Back to top
View user's profile Send private message
Laitr Keiows
Moderator
Moderator


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Sat Mar 15, 2008 12:49 am    Post subject: Reply with quote

dragon1020 wrote:
лезть в исходники - не для меня

А стоило бы... Правильное решение следующее:
Code:
USE="urandom" emerge -1 dev-libs/apr
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum