ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА














     АРХИВ :: Apache-Talk
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



 




Copyright © Lexa Software, 1996-2009.