Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Крушится Apache из-за Curl
session_on  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 8 дней
Карма: 1




Привет, помогите пожалуйста советом.
Не могу понять почему постоянно вылетает apache "Событие: Appcrash, приложение: httpd.exe, имя модуля с ошибкой php_curl.dll".
Apache крушится постоянно когда я запускаю множество скриптов которые что-то ищут на сайтах, в данный раз я проверяю доступность прокси серверов - в 120 потоков.



//Файл connect_proxy_info.php
ignore_user_abort(true);
set_time_limit(0);
ini_set("max_execution_time", "7776000");

$path='connect_proxy.php';

$start=120;//Количество запускаемых скриптов

$open=0;
while($open++<$start){//Запускает 120 connect_proxy.php
$fp=fsockopen("test1.ru", 80, $errno, $errstr, 10);
if(!$fp){
}
else{
$out="GET /$path HTTP/1.0\r\n";
$out.= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
$out.= "Host: test1.ru\r\n";
$out.= "Accept: {$_SERVER['HTTP_ACCEPT']}\r\n";
$out.= "Accept-Language: {$_SERVER['HTTP_ACCEPT_LANGUAGE']}\r\n";
$out.= "Connection: Close\r\n\r\n";
fputs($fp,$out);
fclose($fp);
sleep(1);
}
}




//Файл connect_proxy.php

//Подключение к базе


ignore_user_abort(true);
set_time_limit(0);
ini_set("max_execution_time", "7776000");

search:

$res1=mysql_query("SELECT * FROM `proxy` WHERE `proverka`='0' ORDER BY RAND()");
$res=mysql_fetch_array($res1);
$id=$res['id'];
$proxyip=$res['ip'];
$proxyport=$res['port'];
if(empty($id)){
exit;
}else{
mysql_query("UPDATE `proxy` SET `proverka`='1' WHERE `id`='$id'");
}

$a=0;
$uptime=0;
$uptime2=0;
$anm=1;
$timepacked=0;


while($a++<100){//Отправка 100 запросов
$ch=curl_init();
$timepacked2=gettimeofday("sec");
curl_setopt($ch, CURLOPT_URL, 'site.ru/script_proxy.php');//Отправляю запросы на свой VPS
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_PROXY, $proxyip);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxyport);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.80 (Windows Mobile; WCE; Opera Mobi/WMD-56835; U; ru) Presto/2.4.13 Version/19.00');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Accept: text/html, application/xml;q=0.9, application/xhtml+xml, application/x-obml2d, multipart/mixed, application/vnd.wap.multipart.mixed, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1","Accept-Language: ru-RU,ru;q=0.9,en;q=0.8","Accept-Encoding: gzip, deflate","Cache-Control: no-cache","Connection: Keep-Alive"));
curl_setopt($ch, CURLOPT_ENCODING, 1);
$html=curl_exec($ch);
curl_close($ch);
preg_match('!HELLO V(.*?)S!i',$html,$vh);//В script_proxy.php на VPS высвечивается надпись HELLO VPS - нужно чтоб узнать сколько дошло пакетов до сервера, сколько потерялось + узнать среднее время доставки
if(!empty($vh[1]) AND $vh[1]=='P'){
$timepacked=$timepacked+round(gettimeofday("sec")-$timepacked2,3);
preg_match('!COI(.*?)CIDENCE!i',$html,$vh2);//Если присутсвует COINCIDENCE - прокси не анонимный
if(!empty($vh2[1]) AND $vh2[1]=='N'){
$anm=2;
}
$uptime++;
}else{
$uptime2++;
}
usleep(mt_rand(200000,300000));
}

$timepacked=round($timepacked/$uptime,3);//Получаем среднее время доставки
mysql_query("UPDATE `proxy` SET `proverka`='2', `speed`='$timepacked', `uptime`='$uptime', `uptime2`='$uptime2', `anm`='$anm' WHERE `id`='$id'");
usleep(mt_rand(200000,300000));
goto search;



Скрипт хорошо работает, но вот при множестве потоков Apache крушится...
Сначала я его тестировал на Denwere, я и другие тестировал в множестве потоков - которые что то ищут на каких-то сайтах - при множестве потоков например 100+ через некоторое время Apache крушится "Чем больше потоков запущу тем быстрее вылетает Apache, это может быть 3 минуты - 30 минут"

Поставил другой php_curl.dll, обновил php на более новую версию на Denwere - не помогло.

Скачал с официального сайта open-server.ru "Open Server 5.2.5 полную версию 903mb", установил, перенес базы данных и все скрипты на него (правда в трее при наведение на флаг пишется версия open servera 5.2.2 - но это не важно).
Думал это поможет, но это не помогло, apache вылетает.

Поставил тогда версию в настройках Open Servera "Apache 2.4 x64, PHP 5.6 x64" - настроил конфиги чтоб множество скриптов работали одновременно и все остальное по мелочи увеличил.
Не помогло.

Облазил кучу сайтов в поисках выявления причины, перепробовал кучу советов - не помогает и все.

Операционка Windows 7 X64 - дрова обновлял
Так же тестировал на Windows XP sp 3

Подскажите пожалуйста как же можно решить эту проблему? Любые решения пишите - буду тестировать и надеяться что выявлю причину крушения.

Версия Curl на данный момент 7.49.1

Это сообщение отредактировал session_on - 25.10.2016 - 14:38
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




Apache установлен как prefork? Попробуйте в конфиге изменить:
Цитата
Внутри блока mpm_prefork_module, после указанного числа обработанных запросов, процесс перезапускается (необходимо при переполнении — утечки памяти):
MaxRequestsPerChild 2500


Это сообщение отредактировал RootPM - 25.10.2016 - 15:00


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
session_on  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 8 дней
Карма: 1




ThreadsPerChild 256, его хватает, запускаю же 120 потоков

Это сообщение отредактировал session_on - 25.10.2016 - 15:04
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




Цитата (session_on @ 25.10.2016 - 14:59)
Я в конфигурации вообще не могу prefork найти...

По умолчанию prefork, обычно настройки подключаются из другого каталога.

Это сообщение отредактировал RootPM - 25.10.2016 - 15:04


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
RootPM  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Пользователь
Сообщений: 169
Пользователь №: 43443
На форуме: 2 месяца, 4 дня
Карма: 1




Цитата (session_on @ 25.10.2016 - 14:59)
ThreadsPerChild 256, его хватает, запускаю же 120 потоков

Попробуйте поиграть этим значением и не забывайте перезапустить сервер.

И отключите zend расширение Ioncube в PHP (в конце конфига)

Это сообщение отредактировал RootPM - 25.10.2016 - 15:19


--------------------
Все будет офигенно. Кому-то сразу, кому-то постепенно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
session_on  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 68
Пользователь №: 39921
На форуме: 2 года, 5 месяцев, 8 дней
Карма: 1




Цитата (RootPM @ 25.10.2016 - 15:08)
Цитата (session_on @ 25.10.2016 - 14:59)
ThreadsPerChild 256, его хватает, запускаю же 120 потоков

Попробуйте поиграть этим значением и не забывайте перезапустить сервер.

И отключите zend расширение Ioncube в PHP (в конце конфига)

Поправил
ThreadLimit 1280
ThreadsPerChild 1280

[Tue Oct 25 15:42:12.316901 2016] [ssl:warn] [pid 1260:tid 268] AH01909: test1.ru:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:12.318901 2016] [ssl:warn] [pid 1260:tid 268] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:12.319901 2016] [ssl:warn] [pid 1260:tid 268] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:13.442966 2016] [ssl:warn] [pid 1260:tid 268] AH01909: test1.ru:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:13.444966 2016] [ssl:warn] [pid 1260:tid 268] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:13.445966 2016] [ssl:warn] [pid 1260:tid 268] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:13.488968 2016] [mpm_winnt:notice] [pid 1260:tid 268] AH00455: Apache/2.4.20 (Win64) OpenSSL/1.0.2h configured -- resuming normal operations
[Tue Oct 25 15:42:13.488968 2016] [mpm_winnt:notice] [pid 1260:tid 268] AH00456: Apache Lounge VC11 Server built: Apr 9 2016 12:20:02
[Tue Oct 25 15:42:13.488968 2016] [core:notice] [pid 1260:tid 268] AH00094: Command line: 'C:\\openserver\\modules\\http\\Apache-2.4-x64\\bin\\httpd.exe -d C:/OpenServer/modules/http/Apache-2.4-x64 -f c:\\openserver\\modules\\http\\Apache-2.4-x64\\conf\\httpd.conf'
[Tue Oct 25 15:42:13.491968 2016] [mpm_winnt:notice] [pid 1260:tid 268] AH00418: Parent: Created child process 7180
[Tue Oct 25 15:42:15.580088 2016] [ssl:warn] [pid 7180:tid 280] AH01909: test1.ru:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:15.581088 2016] [ssl:warn] [pid 7180:tid 280] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:15.583088 2016] [ssl:warn] [pid 7180:tid 280] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:16.671150 2016] [ssl:warn] [pid 7180:tid 280] AH01909: test1.ru:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:16.672150 2016] [ssl:warn] [pid 7180:tid 280] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:16.674150 2016] [ssl:warn] [pid 7180:tid 280] AH01909: default:443:0 server certificate does NOT include an ID which matches the server name
[Tue Oct 25 15:42:16.715153 2016] [mpm_winnt:notice] [pid 7180:tid 280] AH00354: Child: Starting 1280 worker threads.


Запустил в 150 потоков, apache вылетел через 25 минут проверки прокси...
Модуль: StackHash_65b9 вместо php_curl.dll , он вылетал так и раньше, то StackHash_ далее что то новое пишется - сейчас же "65b9", то DDL-ка название не помню, помню только что начиналась на "php"

Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: httpd.exe
Версия приложения: 2.4.20.0
Отметка времени приложения: 5708d5c8
Имя модуля с ошибкой: StackHash_65b9
Версия модуля с ошибкой: 6.1.7600.16385
Отметка времени модуля с ошибкой: 4a5bde73
Код исключения: c0000374
Смещение исключения: 0000000000005b07
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 65b9
Дополнительные сведения 2: 65b9da7af41e04cc38936a90c542c933
Дополнительные сведения 3: eeb5
Дополнительные сведения 4: eeb5db3e2be7985a369a6366ee0cc908

Это сообщение отредактировал session_on - 25.10.2016 - 17:39
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса