Apache-Talk mailing list archive (apache-talk@lists.lexa.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[apache-talk] KeepAlive
- To: apache-talk@xxxxxxxxxxxxx
- Subject: [apache-talk] KeepAlive
- From: "Даниил Меграбян" <danil.megrabjan@xxxxxxxxx>
- Date: Mon, 13 Aug 2007 15:45:08 +0400
- Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=Kqo3ZUqaGWlY6gwP9kR150IB0+GTaZE5Rx+NcTnOCYaMnUUCtOrbZvHMzLMpJtSTO2l6qxcejr401ApsZhsCUbrDzlHVCnkxysf1uJ18wBLkBTanui8KBvV+d7RXnuaCbLnLO7zBKFGUiEig2IbiibqqiGEw8qDbEnRoPet+pow=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=XoYd2hW3Lti7ZWicPiNBdD5e6M5v1c3ABIVlaMy6xZEYbyI0DEsTkbN2quOMyIzNvZ3Ix3axW+Jgq7Tk4vmSJavzjnrDNPyTJdnhuz7G/e3IsKFLys9W9m5nGeBbz3Ws/8ZLZLGS743YKbYSBIyCUDgQzk2+3H2cgrMiFLIXxqw=
Господа, не совсем понимаю сути KeepAlive, от того наверное проблема и
возникла... пните в нужную сторону.
OS: SLES10 ( OpenSuse )
- Apache 2.2.4 (prefork)
- php 5 (mod)
- unixODBC
Очень необходимы (постоянные соединения с бд), для пользования
времянками и т.п...
Для этого сделаны: в unixODBC выставлен pooling конэктов к бд, keepalive on 600.
Как должно получиться в идеале. "Браузер 1" грузит index.php. В
скрипте устанавливается коннэкт до БД через unixODBC. Он этот конэкт
кладет в пул. Итого Apache отдает какой-то html клиенту. Всё, на этот
раз. (т.к. keepalive. Cамо соединение между браузером/клиентом
осталось?!) Далее. Cпустя чуть-чуть (менее 600 секунд) тот же "браузер
1" щемиться в script2.php там происходит попытка коннэкта к бд через
unixodbc. Поскольу процесс Apache один и тот же (в случае 1, и
нынешнем) unixODBC подкидывает коннэкт php с pool'a поскольку
реквизиты на коннэкт одни и те же (юзер, пароль, база...) и вот такой
заколдованный круг. Самая главная задача, итого чтобы юзер
законнектившийся к бд один раз через определенный форканный процесс
Apache, далее все последующие запросы там же и выпонялись в этом же
процессе.
На яву же получается бредовая картина. Apache ведет себя по своему
собственному настроению.
1. HTTP запрос
Конэкт к базе - полет нормальный. Обрабатываемся в форканом процессе (
к примеру, ?10).
2. HTTP запрос
Создаем времянку - полет нормальный. Выполнились в том же 10 процессе.
3. HTTP запрос
Какая-нибудь еще операция с БД. Apache форкнул процесс и мы уже
выполняемся в процессе ?11. Нашего старого коннэкта в пуле этого
процесса естественно нет. Это порождает новый коннэкт к бд с теми же
реквизитами...
Очередность запросов и результатов, совершенно не поддается логике.
Может случиться и на 2 http запросе и на 10...
Как быть, жить хочется ?! :)
--
Daniil A Megrabjan | email danil.megrabjan@xxxxxxxxx | icq 4545450
|