Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
20.05.2004, 19:02
|
|||
---|---|---|---|
|
|||
Демоны apache (perl) и висячие соединения на Oracle |
|||
#18+
Добрый localtime, ALL Ситуация следующая: Стоит apache с mod_perl, лежит скрипт script.pl, в котором производится коннект к oracle-серверу через oracle_client7 (все это стоит на freebsd, только на разных машинах). Проблема в том, что частенько появляются зомби apache, причем именно по три штуки на каждый запуск script.pl. Было замечено, что зомби появляются script.pl меняет номер дочернего процесса (если script.pl запускается с тем же номером процесса что и в предыдущий раз то зомби не появляются). Таким образом apache, имея при запуске некоторый набор дочерних процессов для обработки в том числе запусков script.pl из под mod_perl постпенно отдает их под зомби, а себе с каждым появлением зобми создает новый дочерний процесс (надеюсь более мнее понятно объяснил). В итоге выяснилось, что зомби создаются потому, что script.pl создает по 3 процесса при каждом своем запуске, с помощью которых обращается к Oracle. Проблема зомби решилась тем, что был добавлен код: while($mp = waitpid(-1,WNOHANG)) { if($mp == -1) {last} } exit(0); в итоге теперь script.pl ждал завершения всех своих потомков (которых напомю всего 3 штуки каждый раз) и уже потом завершался сам. Но это не решило проблемы со множеством открытых соединений на сервере Oracle, а это слишком ресурсоемко. (дополнение: все открываемые handle'ы в script.pl закрываются принудительно, и принудительно делается $dbh->disconnect, закрытия всех хендлов проходят без ошибок) Вопрос: почему соединения не закрываются? где копать: в DBI или в клиенте Oracle? или в ДНК? ;) Заранее благодарен -- Артем ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.05.2004, 09:57
|
|||
---|---|---|---|
|
|||
Демоны apache (perl) и висячие соединения на Oracle |
|||
#18+
Что такое oracle_client7 ? :-( Мы использовали оракл и мод_перл три года назад, до тех пор, как перешли на постгрес. Коннект к ораклу делался через DBI, только кажется DBD::Oracle был не последним, а каким-то из старых версий, так как с последним возникали проблемы. Лишнего, и тем более трех, апачевских процессов при коннекте не рождалось. Но, конечно, на каждый коннект рождались процессы оракла. script.pl создает по 3 процесса при каждом своем запуске, с помощью которых обращается к Oracle Кто именно, script.pl или DBD::Oracle или кто-то еще, fork-ает эти процессы? И, если известно, для чего? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.05.2004, 16:49
|
|||
---|---|---|---|
|
|||
Демоны apache (perl) и висячие соединения на Oracle |
|||
#18+
Что такое oracle_client7? клиент оракла седьмой версии (я образно написал ;) Мы использовали оракл и мод_перл три года назад, до тех пор, как перешли на постгрес. Коннект к ораклу делался через DBI, только кажется DBD::Oracle был не последним, а каким-то из старых версий, так как с последним возникали проблемы. Лишнего, и тем более трех, апачевских процессов при коннекте не рождалось. Но, конечно, на каждый коннект рождались процессы оракла. процессы не апачевские, а дочерние к script.pl Кто именно, script.pl или DBD::Oracle или кто-то еще, fork-ает эти процессы? И, если известно, для чего? :-) script.pl не форкает, кто это делает незнаю -- вообщем дополнительная информация: >pg 6109 apache 61090 17475 17475 ... apache 61091 17475 17475 ... apache 61092 17475 17475 ... из лога script.pl: [16:22:12] start script.pl pid: 61091, parent pid: 17475 [16:22:14] stop script.pl pid: 61091, parent pid: 17475 [16:40:54] start script.pl pid: 61092, parent pid: 17475 [16:40:57] waitpid script.pl pid: 61092, parent pid: 17475 child pid: 97112 [16:40:57] waitpid script.pl pid: 61092, parent pid: 17475 child pid: 97111 [16:40:57] waitpid script.pl pid: 61092, parent pid: 17475 child pid: 97110 [16:40:57] stop script.pl pid: 61092, parent pid: 17475 после отработки script.pl его дочерние пропадают, но остается открытое соединение: >sockstat|grep 1521 apache httpd 61092 x.x.x.x:1413 y.y.y.y:1521 apache httpd 61091 x.x.x.x:1066 y.y.y.y:1521 напомню: $dbh->disconnect есть в script.pl вопрос: кто не закрывает сокет: DBD или клиент оракла? и как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=23&mobile=1&tid=1479717]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 143ms |
0 / 0 |