The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Perl съедает 100% процессора."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 20-Ноя-07, 11:31 
Всем привет.

У меня есть сервер с биллингом: ABillS + MySQL + Perl 5.8.8 + MPD4.3(200 туннелей PPTP).
Железо: 2000 Celeron, 512 RAM, 40GB IDE HDD.
ОС: FreeBSD unlimit.xxx.ru 6.1-RELEASE-p20 FreeBSD 6.1-RELEASE-p20 #0: Fri Nov 16 20:08:56 MSK 2007     eddy@unlimit.xxx.ru:/usr/src/sys/i386/compile/MYKERNEL  i386

В последнее время испытываю проблемы с нагрузкой на сервер. При 60-80 активных пользователях, сервер начинает дико тормозить и никто уже не может подключиться. Выдается ошибка 718 - что сервер не успел вовремя ответить. В процессах при этом наблюдается от пяти до 20-ти процессов perl5.8.8, которые в сумме загружают процессор на 100%. Процессы эти вызываются радиусом - скрипт racct.pl (аккаунтинг). То есть, чем больше абонентов в онлайне, тем больше Perl грузит процессор.

Сам разработчик рекомендует оптимизировать СУБД MySQL. Но я в этом чайник, но не совсем уверен что причина именно в оптимизации MySQL, так как уже пытался настраивать различные переменные  - но это не дало эффекта.

Вот выводы некоторых команд статистики и мониторинга:

systat:

                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   |

                    /0   /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root           idle XXXXXXXXXXXXXXXXXX
             <idle> XXXXXXXXXXXXXXXX
www       perl5.8.8 XXXXXXXXXXXXXX
root      swi1: net X
root     irq17: rl0 X

top:

last pid:  3330;  load averages:  0.10,  0.17,  0.27                                                  up 0+00:46:25  10:47:42
48 processes:  2 running, 46 sleeping
CPU states: 37.6% user,  0.0% nice,  4.1% system,  6.8% interrupt, 51.5% idle
Mem: 49M Active, 13M Inact, 42M Wired, 36M Buf, 381M Free
Swap: 743M Total, 743M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
3330 www           1 104    0  7888K  7464K RUN      0:01 39.00% perl5.8.8
1372 root          4  20    0  9624K  7656K kserel   0:19  0.00% mpd4
  606 mysql         6  20    0 58204K 27912K kserel   0:09  0.00% mysqld
  785 eddy          1  96    0  6080K  3132K select   0:01  0.00% sshd
  634 root          1   8    0  6344K  4792K nanslp   0:01  0.00% httpd
  607 root          1  96    0  3116K  2864K select   0:01  0.00% bsnmpd
2432 root          1  96    0  4120K  3236K select   0:01  0.00% radiusd
2477 root          1  96    0  1300K   968K select   0:00  0.00% syslogd
  786 eddy          1  20    0  2780K  2528K pause    0:00  0.00% zsh
  809 root          1  20    0  6356K  4072K pause    0:00  0.00% csh
  674 www           1   4    0  6400K  4864K accept   0:00  0.00% httpd
  920 www           1   4    0  6400K  4868K accept   0:00  0.00% httpd
  673 www           1   4    0  6408K  4872K accept   0:00  0.00% httpd
  672 www           1   4    0  6400K  4868K accept   0:00  0.00% httpd
  675 www           1   4    0  6400K  4864K accept   0:00  0.00% httpd
  676 www           1   4    0  6400K  4864K kqread   0:00  0.00% httpd
  950 www           1   4    0  6392K  4864K accept   0:00  0.00% httpd
  678 root          1  96    0  3420K  2932K select   0:00  0.00% sendmail
  776 root          1   4    0  6104K  3108K sbwait   0:00  0.00% sshd
2429 root          1   8    0  1228K   684K nanslp   0:00  0.00% svscan
3325 root          1  96    0  2368K  1636K RUN      0:00  0.00% top
2986 www           1   4    0  6392K  4856K accept   0:00  0.00% httpd
  694 root          1   8    0  1312K  1044K nanslp   0:00  0.00% cron
  801 eddy          1   8    0  1604K  1304K wait     0:00  0.00% su
  562 mysql         1   8    0  1652K  1276K wait     0:00  0.00% sh
  658 root          1  96    0  3356K  2632K select   0:00  0.00% sshd
  532 root          1  96    0  1212K   780K select   0:00  0.00% usbd
  736 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  742 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  735 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  737 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  739 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  740 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  687 smmsp         1  20    0  3300K  2724K pause    0:00  0.00% sendmail
  738 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
  741 root          1   5    0  1268K   904K ttyin    0:00  0.00% getty
2431 root          1  96    0  1180K   668K select   0:00  0.00% supervise

Операционная система и СУБД были установлены с параметрами по дефолту. Посоветуйте как оптимизировать систему и решить проблемы с производительностью.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Perl съедает 100% процессора."  
Сообщение от pavel_simple (ok) on 20-Ноя-07, 11:41 
у меня
time perl -e 'use DBI;print '

real    0m0.095s
user    0m0.036s
sys     0m0.004s
у тебя сколько занимает? -- думаю много больше

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 20-Ноя-07, 11:51 
а у меня:
unlimit# time perl -e 'use DBI;print'
0.168u 0.019s 0:00.26 65.3%     13+1444k 0+0io 0pf+0w
unlimit# time perl -e 'use DBI;print'
0.148u 0.029s 0:00.26 61.5%     15+1366k 0+0io 0pf+0w

Правда что это значит не совсем понял. 65.3% - это загрузка проца?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Perl съедает 100% процессора."  
Сообщение от pavel_simple (ok) on 20-Ноя-07, 11:59 
надо тюнить запуск перла тебе (я по bsd далеко не спец но) с запуском перла на bsd было всегда плохо
вот например показательный пример
самая "тупая" машина какая есть под рукой
cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 5
model           : 8
model name      : AMD-K6(tm) 3D processor
stepping        : 12
cpu MHz         : 266.461
cache size      : 64 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips        : 533.66
ну и показатели
time perl -e 'use DBI;print asd'

real    0m0.721s
user    0m0.636s
sys     0m0.084s
time perl -e 'use DBI;print asd'

real    0m0.702s
user    0m0.644s
sys     0m0.060s
попробуй крикнуть в форуме "БСД'эшники" типа "какой -то красноглазый мне..."
глядишь помогут -- а так -- даже не знаю
посмотри в abills + radius сколько процессов запускается по умолчанию (где-то там такое должно быть)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Perl съедает 100% процессора."  
Сообщение от idle (ok) on 20-Ноя-07, 14:21 
2eddy_mut
>Правда что это значит не совсем понял. 65.3% - это загрузка проца?

Команда time загрузку процессора не показывает и ничего полезного в данном случае не покажет, это Вам фигню посоветовали.

По сабжу оптимизируйте систему.

Я не знаю что это за софт - abills, но имхо, фраза
>разработчик рекомендует оптимизировать СУБД MySQL

звучит примерно как ответ провайдера на жалобу по поводу качества интернета - оптимизируйте сетевую карту.


2pavel_simple
>с запуском перла на bsd было всегда плохо

Ссылку покажите, или Вы это сами придумали?
>вот например показательный пример
>...
>ну и показатели

Чего показатели?
Прочитайте man time и не несите ерунды.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 20-Ноя-07, 16:50 
Софт ABillS - по сути набор скриптов Perl  - для авторизации и аккаунтинга + веб интерфейс и база.

А что бы Вы посоветовали посмотреть, чтобы понять почему Perl так загружает процессор?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Perl съедает 100% процессора."  
Сообщение от idle (ok) on 20-Ноя-07, 17:40 
>Софт ABillS - по сути набор скриптов Perl  - для авторизации
>и аккаунтинга + веб интерфейс и база.

Я понимаю для чего он, имелось ввиду что сам с ним не работал.

>А что бы Вы посоветовали посмотреть, чтобы понять почему Perl так загружает
>процессор?

Вариантов миллионы. http://www.google.com/search?q=benchmarking+perl
Сначала точно определите узкое место, это может быть не только perl, но и а mysql или httpd.
Если думаете на скрипт racct.pl, то запускайте его и смотрите.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Perl съедает 100% процессора."  
Сообщение от uldus (ok) on 20-Ноя-07, 23:29 
>top:
>last pid:  3330;  load averages:  0.10,  0.17,  0.27          

Представьте вывод при перегрузке, то что вы привели сплошной простой сервера.

>Mem: 49M Active, 13M Inact, 42M Wired, 36M Buf, 381M Free

Вероятно памяти не хватает, добавьте побольше памяти и увеличте буферы в MySQL по примерам которые в пакете с MySQL идут.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 21-Ноя-07, 09:14 
>>top:
>>last pid:  3330;  load averages:  0.10,  0.17,  0.27          
>
>Представьте вывод при перегрузке, то что вы привели сплошной простой сервера.
>

Не могу сказать точно какой load averages во время проблем по вечерам, но могу сказать точно что idle 0%, и наверху списка видно несколько процессов perl5.8.8 по процентам в сумме набирающие 100%. Нагрузка не постоянная, а скорее скачкообразная.

>>Mem: 49M Active, 13M Inact, 42M Wired, 36M Buf, 381M Free
>
>Вероятно памяти не хватает, добавьте побольше памяти и увеличте буферы в MySQL
>по примерам которые в пакете с MySQL идут.

Пробовал подсунуть my-huge.cnf из дистрибутива MySQL или самого ABillS. Но вечером ситуация снова повторяется. Судя по тому что пишут 381M Free - памяти хватает?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Perl съедает 100% процессора."  
Сообщение от Сергей (??) on 21-Ноя-07, 10:04 
>Не могу сказать точно какой load averages во время проблем по вечерам,
>но могу сказать точно что idle 0%, и наверху списка видно
>несколько процессов perl5.8.8 по процентам в сумме набирающие 100%. Нагрузка не
>постоянная, а скорее скачкообразная.
>

Начать стоит с мониторинга - установить с нуля net-snmpd + cacti дело всего на полчаса с чтением док и разглядыванием, а что же это такое. После чего будете знать и загрузку своих каналов, и корреляцию количества пользователей/активности скачивания/количества свободной памяти/нагрузки на процессор/load average
Ну а дальше уже можно будет копать, а где затык - в памяти или процессоре, а потом тюнить по порядку perl, mysql и т.п.


>>>Mem: 49M Active, 13M Inact, 42M Wired, 36M Buf, 381M Free
>>
>>Вероятно памяти не хватает, добавьте побольше памяти и увеличте буферы в MySQL
>>по примерам которые в пакете с MySQL идут.
>
>Пробовал подсунуть my-huge.cnf из дистрибутива MySQL или самого ABillS. Но вечером ситуация
>снова повторяется. Судя по тому что пишут 381M Free - памяти
>хватает?

Сам mysql не забыли при этом перезапустить? после этого загрузка памяти должна была вырасти.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Perl съедает 100% процессора."  
Сообщение от Andrushka (??) on 21-Ноя-07, 10:36 
Автор абилса практически всегда так отвечает (чтобы как-то по другому надо денег дать).
Поэтому спасение утопающих дело рук самих утопающих.

У меня перл грузит систему когда обсчитывает траффик
Если у вас он грузит систему на 100% даже в момент авторизации пользователя и началось это недавно то проблема в большом количестве записей в базе.

В какой таблице нескажу, неописано в какой конфигурации работает абилс.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 21-Ноя-07, 13:42 
>Автор абилса практически всегда так отвечает (чтобы как-то по другому надо денег
>дать).
>Поэтому спасение утопающих дело рук самих утопающих.

В конце концов я начинаю склоняться к мысли, что денег надо все же дать. Тем более что с начальством уже обсудил - дали добро.

>
>У меня перл грузит систему когда обсчитывает траффик
>Если у вас он грузит систему на 100% даже в момент авторизации
>пользователя и началось это недавно то проблема в большом количестве записей
>в базе.
>
>В какой таблице нескажу, неописано в какой конфигурации работает абилс.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 21-Ноя-07, 13:35 
>Начать стоит с мониторинга - установить с нуля net-snmpd + cacti дело
>всего на полчаса с чтением док и разглядыванием, а что же
>это такое. После чего будете знать и загрузку своих каналов, и
>корреляцию количества пользователей/активности скачивания/количества свободной памяти/нагрузки на процессор/load average
>Ну а дальше уже можно будет копать, а где затык - в
>памяти или процессоре, а потом тюнить по порядку perl, mysql и
>т.п.

Я рассмотрю это как вариант.


>Сам mysql не забыли при этом перезапустить? после этого загрузка памяти должна
>была вырасти.

Да, СУБД я перезагрузил, и размер занимаемой памяти вырос.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Perl съедает 100% процессора."  
Сообщение от SubGun (ok) on 21-Ноя-07, 10:34 
lsof | grep <id>

Ибо меня терзают смутные ощущения, что вас "имеют".
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Perl съедает 100% процессора."  
Сообщение от eddy_mut email(ok) on 21-Ноя-07, 13:32 
>
lsof | grep <id>

>Ибо меня терзают смутные ощущения, что вас "имеют".

unlimit# lsof | grep <id>
Ambiguous input redirect.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Perl съедает 100% процессора."  
Сообщение от idle (ok) on 21-Ноя-07, 14:51 
>>lsof | grep <id>
>>Ибо меня терзают смутные ощущения, что вас "имеют".
>
>unlimit# lsof | grep <id>
>Ambiguous input redirect.

Вместо <id> должен быть идентификатор процесса, а вместо lsof - fstat, так как lsof это из линукса.
Но это ничего не даст, так как уже ясно, что проблема в самом софте.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Perl съедает 100% процессора."  
Сообщение от SubGun (ok) on 21-Ноя-07, 15:43 
Уже понятно? Лапти +10 к телепатии купили?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Perl съедает 100% процессора."  
Сообщение от idle (??) on 21-Ноя-07, 19:07 
>Лапти +10 к телепатии купили?

Да Вы знаете, было дело, давно правда, уж и не помню когда последний раз одевал.
Я перестал ими пользоваться с тех пор, как научился внимательно читать то что пишут и пользоваться поиском.

>Уже понятно?

Вроде всё очевидно. Вам нет? Может я Вам лапти вышлю, раз уж мне ни к чему?
Возможно тогда Вы догадаетесь что id www имеет очень отдалённое отношение к проблеме автора, а также о том что утилита lsof на FreeBSD6.1 нафик не нужна.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Perl съедает 100% процессора."  
Сообщение от SubGun (ok) on 21-Ноя-07, 16:12 
>>
lsof | grep <id>

>>Ибо меня терзают смутные ощущения, что вас "имеют".
>
>unlimit# lsof | grep <id>
>Ambiguous input redirect.

Если lsof нет в системе, то /usr/ports/sysutils/lsof. <id> - это идентификатор процесса. В вашем случае

3330 www           1 104    0  7888K  7464K RUN      0:01 39.00% perl5.8.8

это было бы:
lsof | grep 3330

Как только увидите такой же процесс, работающий от пользователя www, сделайте это, а результат сюда запостите.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Perl съедает 100% процессора."  
Сообщение от Rupreht on 08-Дек-07, 00:25 
>
lsof | grep <id>

>Ибо меня терзают смутные ощущения, что вас "имеют".

lsof -p <id> наверно так :)

а показатель в top напротив процесса - процент подругому вычисляется. Смотри на общую стату (load averages: .... , idle)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

20. "Perl съедает 100% процессора."  
Сообщение от Rupreht on 08-Дек-07, 00:47 
если хошь смотреть конкретно загрузку CPU то %top -C
а так если у тебя 200 tun то включай полинг man polling
на счет аккаунтинга смотри /usr/local/etc/raddb/acct_users строчки Acct-Status-Type .... Exec-Program
по идее там должно быть что то типа поднятия/опускания интерфейса для юзера, это происходить должно один раз при подключении и один при откл. юзвера (т.е. скрипт висеть не должен). Смотри лог радиуса, кто с какой частотой коннектится.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "Perl съедает 100% процессора."  
Сообщение от blk (??) on 08-Дек-07, 19:15 
>если хошь смотреть конкретно загрузку CPU то %top -C
>а так если у тебя 200 tun то включай полинг man polling
>
>на счет аккаунтинга смотри /usr/local/etc/raddb/acct_users строчки Acct-Status-Type .... Exec-Program
>по идее там должно быть что то типа поднятия/опускания интерфейса для юзера,
>это происходить должно один раз при подключении и один при откл.
>юзвера (т.е. скрипт висеть не должен). Смотри лог радиуса, кто с
>какой частотой коннектится.

Аффтор ты бы хоть мануал Abills почитал....
Вообще проблема в том, что при приходе alive пакета от радиуса (по дефолту раз в минуту)

racct.pl (могу ошибаться в названии) стартует, что для операционки несколько не приятно, особенно если таких процессов >50, в единицу времени. rlm_perl спасет....


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру