|
Демоны 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? или в ДНК? ;) Заранее благодарен -- Артем ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 19:02 |
|
Демоны apache (perl) и висячие соединения на Oracle
|
|||
---|---|---|---|
#18+
Что такое oracle_client7 ? :-( Мы использовали оракл и мод_перл три года назад, до тех пор, как перешли на постгрес. Коннект к ораклу делался через DBI, только кажется DBD::Oracle был не последним, а каким-то из старых версий, так как с последним возникали проблемы. Лишнего, и тем более трех, апачевских процессов при коннекте не рождалось. Но, конечно, на каждый коннект рождались процессы оракла. script.pl создает по 3 процесса при каждом своем запуске, с помощью которых обращается к Oracle Кто именно, script.pl или DBD::Oracle или кто-то еще, fork-ает эти процессы? И, если известно, для чего? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 09:57 |
|
Демоны 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 или клиент оракла? и как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 16:49 |
|
|
start [/forum/topic.php?fid=23&fpage=510&tid=1479717]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 152ms |
0 / 0 |