Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не понятное поведение пхп...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: проблемы с сокетами
Ins_x86
Отправлено: 14 Декабря, 2007 - 19:35:34
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Дек. 2007  


Помог: 0 раз(а)




Всем привет! Тема такая, куда запостить-то и не поймешь... Если не туда, больно не пинайте, а переместите, куда надо)

Уважаемые гуру, очень нужна ваша помощь! Недавно столкнулся с такой проблемой.
Многие, наверно, знают скрипт php Rapid Get Pro (который Vincoma). У меня есть 2 виртуальных серва, один (ВПС) на дебиан 3.1, второй (ВДС) на дебиан 4.0. На обоих стоят стандартные (бинарники с апта) апач2.2.3 билд от 17 июня 07 и пхп5 (5.2.0-8+etch7).

На первом хосте, который Sarge, никаких проблем. Скачка-закачка идет 500-2500кбайт на поток, несколькими потоками свободно забиваются все 100Мбит канала. На втором же при скачивании НА сервер суммарная скорость не превышает 2Мбайт, при этом если запускать больше конкурирующих закачек, скорость каждой из них падает, а суммарная остается без изменений (качал с разных сервов), wget'ом тянет отлично, так что каналы в поряде. Однако, если заливать С сервера, проблемы чудесным образом исчезают, и несколькими потоками запросто удается утилизировать весь канал. Это совсем меня сбило с толку...

Пробовал собирать апач и пхп руками из тарболов - результат тот же. Тестил дома на vmware (Дебиан 4.0) (качал файлы с локального сервера на физической машине на серв в виртуалке) - тож самое. Настройки пхп и апача такие же как и на первом сервере, пробовал оставлять по дефолту - без толку.

До 2Мбайт/с это по хттп, по фтп (опять же сокетами) удалось разогнать до суммарных ~4Мб, где, уже не помню, толи на серве, толи дома.

Вспомнил про валяющийся на харде *.iso Юбунту 6 сервер. Поставил с комплектным лампом. Скорость на поток стала вообще 100-150кбайт. Почему, я понять не могу. В скрипте есть функция регулирования нагрузки на процессор, вставляющая ожидание в n микросекунд каждые m тактов процессора. В некоторых пределах позволяет управлять скоростью потока. Но ни длительность микросекунды, ни частота моего процессора не изменились, скорость же потока упала на юбунту в 4-5 раз. Почему - опять не понятно. Попробовал отключить вовсе на проблемном серве. Скорость потока подскочила до 1500-2000, против старых не более 1000 (загрузка процессора следом почти до 100))), но в сумме при нескольких потоках - скорость та же, не более 2000. С включенным ограничением, но с увеличенным количеством рабочих тактов, удается начти золотую середину, но опять же суммарная скорость не более 2Мбайт/с при загрузке CPU ~50%.

При ожидании в 1мкс каждые 10 тактов загрузка не превышает 5-10% на процесс апача, скорость потока ~1000. Кстать, кто может сказать, почему трансфер по сокетам так грузит процессор, без ограничений грузит на 100% не зависимо от скорости, при вставке ожидания каждые неск. тактов нагрузка падает в разы быстрее, чем скорость. Получается сеть/удал.серв. просто не может отдавать быстрее, а CPU все равно на 100 грузит, с ограничением можно добиться той же скорости потока при гораздо меньшей нагрузке на проц.

Сейчас качаю Сарж, попробую на нем дома.

С вгетом никаких проблем при скачивании нет, исходящий поток скриптом тоже без проблем, а с входом такая чертовщина... Ведь с точки зрения системы сокет он и есть сокет, никакой разницы быть не должно... Короч, я в полном ступоре, может я чего не знаю/не понимаю? Бьюсь 4-ый день...

И еще, от чего зависит количество параллельных скачек, которое получается запустить? Обычно запускается 4-7 (на сарже, на етче не более 4-5), далее висит пустое окно с ожиданием вывода от скрипта пока не закончится хоть одна закачка (стоит игнор юзер аборт). Причем в лисе больше 2 не запускалось, в опере - 4-7. Средняя загрузка CPU далека от 100%. Момент тоже мне не понятный. В скрипте никаких ограничений подобного рода нет. Очень надеюсь на вашу помощь, особенно по первой части поста.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB