#26558 [Bgs->Ana]: High load of OCI-Calls crash on multiprocessor machine with Apache2
| From: | tony2001@php.net | Date: | Wed, 10 Dec 2003 14:19:58 +0000 |
| Subject: | #26558 [Bgs->Ana]: High load of OCI-Calls crash on multiprocessor machine with Apache2 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-51917@lists.php.net to get a copy of this message | ||
ID: 26558
Updated by: tony2001@php.net
Reported By: k_becker at kat dot de
-Status: Bogus
+Status: Analyzed
Bug Type: OCI8 related
Operating System: Windows 2000 Adv. Server
PHP Version: 4.3.4
New Comment:
it seems to me, this bug appears due to the fact, that current
implementation of ext/oci8 doesn't use OCI_THREADED flag with
OCIInitialize();
Maxim tells about it here:
http://www.zend.com/lists/php-dev/200301/msg00213.html
OCI docs about OCI's thread safety are here:
http://docs.linux.cz/Oracle8/server/a58234/new_adva.htm#427495
I think, I can add this feature shortly.
Previous Comments:
------------------------------------------------------------------------
[2003-12-10 09:14:02] sniper@php.net
Not PHP bug. (plus Apache2 + PHP in threaded env. is not really ready
for production anyway)
------------------------------------------------------------------------
[2003-12-10 05:56:13] k_becker at kat dot de
I tried the "MaxThreadsPerChild=1" from Bug#19517. No crashes, but
Apache "... ran out of threads".
Then set
MaxRequestsPerChild 100000,
ThreadsPerChild 100
and tried using the explicit Oracle address string from TNSnames.ora.
This seems to work.
Then tried php4-win32-STABLE-latest.zip of 2003-dec-10: Same result.
I now have: Apache/1.3.28 (Win32) PHP/4.3.5-dev, OCI8 Revision:
1.183.2.7 on Windows 2000 adv. server build 2195 with
MaxRequestsPerChild 100000, ThreadsPerChild 100.
Temporary solution seems to be using the TNS address string in
OCILogon("user", "pass",
"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SID=xxx))")
So, problem seems to be in the Oracle/Oci8 name resolving in concurrent
OCILogon()'s from multiple Apache/PHP-threads.
------------------------------------------------------------------------
[2003-12-09 06:09:35] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Also, does this happen with anything else than oci8 ?
------------------------------------------------------------------------
[2003-12-09 04:38:27] k_becker at kat dot de
Description:
------------
Platform: 4-CPU machine, Apache 2.0.39..48, PHP 4.3.x, Win 2000 Adv.
server engl., OCI8, Oracle 8.1.7EE
When issuing multiple Oracle-requests at once, the Apache client thread
dies with protection fault (C0000005) without any further message from
PHP, Oracle or Apache.
Same code runs okay on one-CPU machine with same platform. Changing
Apache to 1.3.28 helped.
Could be a problem within the PHP for Apache2 parallelization on more
than one CPU.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26558&edit=1