Here's a summary of the problem and my findings. It's still unsolved. Any help appreciated!
Symptom: ALL requests to MW 1.13 time-out while ANY ONE user is hitting a long-running page (e.g., one with a long-running parser tag)
Theory: PHP sessions are locked
- Brion reproduced this behavior only per-session, by hitting a long-running wiki page in one browser tab and a second page in a second tab. He did not experience it for two simultaneous, separate sessions.
- I have the problem even when two separate *users* hit two MediaWiki pages from two different PCs. A long-running page prevents wiki pages from being served to the second user. So I suspect my issue is different from Brion's.
- I got the same results Brion did by writing two trivial PHP scripts that simply call session_start(), with one of them sleeping for 30 seconds. The problem is limited to MediaWiki pages.
Therefore, the problem I'm experiencing (everyone blocked) is different from the "PHP session" behavior Brion reproduced.
Ruled out:
- It seems not an Apache problem because other PHP pages (non-MediaWiki) on the same webserver are not affected. They always get served immediately, even when a long-running MediaWiki page is running.
- It's not due to a third-party extension because I've reproduced this problem on a virgin MW 1.13 install.
- Occurs for MW servers on both Windows 2003 Server and CentOS Linux with different Apache and PHP configurations.
- It's not eAccelerator, which I disabled and the problem still happened.
Stack dump when the problem occurs (MW 1.13):
Fatal error: Maximum execution time of 30 seconds exceeded in includes\db\Database.php on line 579 Stack trace: 1. {main}() index.php:0 2. MediaWiki->checkInitialQueries() index.php:60 3. Title::newMainPage() includes\Wiki.php:105 4. wfMsgForContent() includes\Title.php:293 5. wfMsgReal() includes\GlobalFunctions.php:380 6. wfMsgGetKey() includes\GlobalFunctions.php:432 7. StubObject->get() includes\GlobalFunctions.php:467 8. StubObject->__call() includes\StubObject.php:0 9. StubObject->_call() includes\StubObject.php:76 10. call_user_func_array() includes\StubObject.php:58 11. MessageCache->get() includes\StubObject.php:0 12. MessageCache->getMsgFromNamespace() includes\MessageCache.php:543 13. MessageCache->load() includes\MessageCache.php:606 14. MessageCache->saveToCaches() includes\MessageCache.php:250 15. BagOStuff->add() includes\MessageCache.php:419 16. SqlBagOStuff->set() includes\BagOStuff.php:100 17. SqlBagOStuff->delete() includes\BagOStuff.php:274 18. SqlBagOStuff->_query() includes\BagOStuff.php:288 19. MediaWikiBagOStuff->_doquery() includes\BagOStuff.php:319 20. Database->query() includes\BagOStuff.php:433 21. Database->doQuery() includes\db\Database.php:540
Any help appreciated, or advice on what to check next.
DanB