Есть скрипт на perl, представляюший собой неблокирующий сервер, поясню
в цикле:
while(1)
{
1.Через каждые две секунды выполняется некий блок операторов.
2.Если есть подключения клиентов, то обрабатываю и посыл некий ответ
}
Так вот таккой скрип, как мне сказал админ, сильно загружает сервак(7 процессоров), говорит uptime большой, я лично даже не понимаю в чем может быть дело, чему здесь тормозить?
>Есть скрипт на perl, представляюший собой неблокирующий сервер, поясню
>в цикле:
>while(1)
>{
> 1.Через каждые две секунды выполняется некий блок операторов.
> 2.Если есть подключения клиентов, то обрабатываю и посыл некий ответ
>
>}
>Так вот таккой скрип, как мне сказал админ, сильно загружает сервак(7 процессоров),
>говорит uptime большой, я лично даже не понимаю в чем может
>быть дело, чему здесь тормозить?Может дело в блоке операторов быть, там создается нагрузка.
А так, раз в 2 секунды - это ерунда, тем более для семи процессоров ;)
>Может дело в блоке операторов быть, там создается нагрузка.
>А так, раз в 2 секунды - это ерунда, тем более для
>семи процессоров ;)а не может быть что perl чудит с памятью, так как нагрузка увеличивается со временем. Я еще не сказал но уменя достаточно интенсивно делается перебор хеша функцией foreach(keys %hash), правда хаш то не большой не более 10 записей.
>>Может дело в блоке операторов быть, там создается нагрузка.
>>А так, раз в 2 секунды - это ерунда, тем более для
>>семи процессоров ;)
>
>а не может быть что perl чудит с памятью, так как нагрузка
>увеличивается со временем. Я еще не сказал но уменя достаточно интенсивно
>делается перебор хеша функцией foreach(keys %hash), правда хаш то не большой
>не более 10 записей.Запусти его на часик и посмотри, сколько времени он работает. Это можно посмотреть при помощи ps или top (поле TIME).
Также посмотри, сколько он памяти занимает, всего и реально (SIZE и RES в top).
Что бы перл чудил - такое вряд-ли. У меня были хеши за миллион записей, и ничего, работало.
1,2 в студию
while(1){} грузит на все 100
>while(1)
>{
> 1.Через каждые две секунды выполняется некий блок операторов.
> 2.Если есть подключения клиентов, то обрабатываю и посыл некий ответ
>
>}
А как отмеряются эти две секунды? Не знаю как, в Перле, но в C-никах обычно ставят Sleep(), когда не требуется высокая частота обновления, например:
while(1)
{
... (действия)
Sleep(200);
}
Один процесс не должен завешивать более одного процессора.Как я понимаю, пункт 2 выполняется не один раз в 2 секунды, а на каждом шаге цикла. Тогда он действительно завесит на 100%.
>Один процесс не должен завешивать более одного процессора.
>Как я понимаю, пункт 2 выполняется не один раз в 2 секунды,
>а на каждом шаге цикла. Тогда он действительно завесит на 100%.А какая операционная система?
>>Один процесс не должен завешивать более одного процессора.
>>Как я понимаю, пункт 2 выполняется не один раз в 2 секунды,
>>а на каждом шаге цикла. Тогда он действительно завесит на 100%.
>
>А какая операционная система?Если фря я бы молча подправил login.conf ибо нефиг (Всмысле я это АДМИН)