![]() |
Показаны 15 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- mysql_connect vs. mysql_pconnect (http://netadmin.ws/forum/showthread.php?threadid=5033)
mysql_connect vs. mysql_pconnect
что использовать? по одним источникам mysql_pconnect лучше, по другим наоборот....
Сайт около 15-20 тысяч хитов в день, нагрузка на mysql довольно такаи большая...
__________________
RTFM (Уважаемые! Читайте документацию!)
imho, pcconect использовать, это считай что для каждого запроса новый конект будет создаватья при использовании connect. Но обрати внимание что если пхп установлен как cgi то это тебе ничего не даст.
__________________
Всегда есть решение.
из рассылки сайта Ð_НÐ_ для всех! http://virtual.bresttelecom.by/php/
quote:
Учтите, в PHP реализована функция отключения постоянных соединений, поэтому если у провайдера в конфигурации PHP установлена директива mysql.allow_persistent = Off, то соединения вызываемые функцией mysql_pconnect() будут обрабатываться как mysql_connect().
Очень часто встречаются советы не использовать постоянные соединения с БД. Ð_то связано в первую очередь с тем, что многопоточные веб-сервера, к которым относится и Apache, не могут разделить со своими потомками соединение с БД. Таким образом если следующий запрос приходит на другого потомка, то он создает новое постоянное соединение, что со временем приводит к появлению большого количества незакрытых соединений с БД и переполнению допустимого лимита max_connections в MySQL.
Возможно два решения этой проблемы: первое описано выше заключается в запрете использования постоянных соединений, второе - использовать малое значение времени жизни постоянного соединения в директиве wait_timeout конфигурации MySQL. По умолчанию оно составляет 28800 сек. (8 часов), по истечению которых после отсутствия активности соединения будет закрыто.
Помимо всего этого существуют еще некоторые проблемы постоянных соединений с транзакциями и блокировками таблиц. Так, если таблица блокируется запросом на транзакцию или LOCK TABLE и при этом скрипт заканчивает свое выполнение до завершения транзакции или выполнения разблокировки таблицы UNLOCK TABLE соответственно, то вторичная попытка доступа к таблице через это же постоянное соединение будет отклонена. При использовании непостоянного соединения с БД, при завершении скрипта соединение закрывается автоматически и при этом снимает блокировку со всех таблиц и завершает все транзакции. Ð_ешением этой проблемы есть регистрации функции register_shutdown_function() которая бы по завершению скрипта снимала блокировку с таблиц и завершала транзакции.
Так что можете использовать, а можете и не использовать, все зависит от поставленных задач.
__________________
http://simpsons.ykt.ru - русский портал о Симпсонах
pconnect гадость редкостная. Я не видел еще ни одного проекта, гда использование персистента приводило к повышению быстродействия. А вот минусов - хоть отбавляй.
__________________
http://www.phpdevs.com
Ð_усский ресурс о PHP
Если сервер правильно настроен то это дает результаты.
__________________
Всегда есть решение.
Stek, у меня в результате pconnect заметно увеличение скорости даже "на глазок". побольше соединений поставил в mysql, то-се...
__________________
RTFM (Уважаемые! Читайте документацию!)
quote:
Если сервер правильно настроен то это дает результаты.
quote:
у меня в результате pconnect заметно увеличение скорости даже "на глазок
__________________
http://www.phpdevs.com
Ð_усский ресурс о PHP
Согласен со Stek. pconnect работает в конечном итоге медленнее чем просто connect
pconnect выигрывает по скорости на правильно настроенном сервере, как верно подметил polo. Дело в том, что при постоянных коннектах MySQL при каждом обращении не делает переинициализации прав доступа ко всем таблицам и т.п. А то что сотня апачей - это фигня. У меня их 250 и чего? Гораздо больше скорости можно выиграть отключив к примеру AllowOverride в Apache. И по другому подобно провести "тюнинг" Апача.
pconnect работает быстрее чем connect при условии большого количества запросов и настроенном mySQL. Последний месяц был занят экспериментами с folk() и linuxthread в среде mySQL4х на FreeBSD5х с vb3 и постоянной нагрузкой 100-200 человек. На скомпилированном по умолчанию mySQL разница очень существенна, межу p/connect, можно сразу повесить базу даже, а вот на linuxthread на "глаз" плохо видно, т.к. производительность кратно возрастает нагрузка нужна больше значительно. Всем советую:
1. Настраивать mySQL
2. Компилировать с линухтредами в среде FreeBSD
3. Юзать pconnect
quote:
1. Настраивать mySQL
__________________
RTFM (Уважаемые! Читайте документацию!)
Orliha
Как же так?
В дистрибутиве есть примеры для настроек серверов нескольких типов - от мало до велика. На сайте разработчиков есть описание каждой переменной. В любом случае, помогут, хоть я например. Присылай свою конфигурацию железа и софта, и выкладывай my.cnf
P4 - 2.0Ghz - 1 GB RAM
порядка 10к хостов в день, порядка 60к хитов... очень активно юзается mysql...
что под софтом подразумевается??? софт самописный )) пхп+mysql
my.cnf - из дистрибутива (который расчитанн на самые загруженные сервера)...
__________________
RTFM (Уважаемые! Читайте документацию!)
uname -a?
с какими ключами собран mysqld?
переменные:
back log 50 50
basedir / /
binlog cache size 32768 32768
bulk insert buffer size 8388608 8388608
character set cp1251 cp1251
character sets latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
concurrent insert ON ON
connect timeout 5 5
convert character set
datadir /var/lib/mysql/ /var/lib/mysql/
default week format 0 0
delay key write ON ON
delayed insert limit 100 100
delayed insert timeout 300 300
delayed queue size 1000 1000
flush OFF OFF
flush time 0 0
ft boolean syntax + -><()~*:""&| + -><()~*:""&|
ft min word len 4 4
ft max word len 254 254
ft max word len for sort 20 20
ft stopword file (built-in) (built-in)
have bdb NO NO
have crypt YES YES
have innodb YES YES
have isam YES YES
have raid NO NO
have symlink YES YES
have openssl NO NO
have query cache YES YES
init file
innodb additional mem pool size 1048576 1048576
innodb buffer pool size 8388608 8388608
innodb data file path ibdata1:10M:autoextend ibdata1:10M:autoextend
innodb data home dir
innodb file io threads 4 4
innodb force recovery 0 0
innodb thread concurrency 8 8
innodb flush log at trx commit 1 1
innodb fast shutdown ON ON
innodb flush method
innodb lock wait timeout 50 50
innodb log arch dir ./ ./
innodb log archive OFF OFF
innodb log buffer size 1048576 1048576
innodb log file size 5242880 5242880
innodb log files in group 2 2
innodb log group home dir ./ ./
innodb mirrored log groups 1 1
innodb max dirty pages pct 90 90
innodb max purge lag 0 0
innodb table locks ON ON
interactive timeout 28800 28800
join buffer size 131072 131072
key buffer size 402653184 402653184
language /usr/share/mysql/english/ /usr/share/mysql/english/
large files support ON ON
license GPL GPL
local infile ON ON
locked in memory OFF OFF
log OFF OFF
log update OFF OFF
log bin ON ON
log slave updates OFF OFF
log slow queries OFF OFF
log warnings 1 1
long query time 10 10
low priority updates OFF OFF
lower case file system OFF OFF
lower case table names 0 0
max allowed packet 1047552 1047552
max binlog cache size 4294967295 4294967295
max binlog size 1073741824 1073741824
max connections 100 100
max connect errors 10 10
max delayed threads 20 20
max insert delayed threads 20 20
max heap table size 16777216 16777216
max join size 4294967295 4294967295
max relay log size 0 0
max seeks for key 4294967295 4294967295
max sort length 1024 1024
max user connections 0 0
max tmp tables 32 32
max write lock count 4294967295 4294967295
myisam max extra sort file size 268435456 268435456
myisam max sort file size 2147483647 2147483647
myisam repair threads 1 1
myisam recover options OFF OFF
myisam sort buffer size 67108864 67108864
net buffer length 16384 16384
net read timeout 30 30
net retry count 10 10
net write timeout 60 60
new OFF OFF
open files limit 10000 10000
pid file /var/lib/mysql/dfhjdhjdfgh.ru.pid /var/lib/mysql/dghfhdhjhjsdfgh.ru.pid
log error
port 3306 3306
protocol version 10 10
query alloc block size 8192 8192
query cache limit 1048576 1048576
query cache size 33554432 33554432
query cache type ON ON
query prealloc size 8192 8192
range alloc block size 2048 2048
read buffer size 2093056 2093056
read only OFF OFF
read rnd buffer size 262144 262144
rpl recovery rank 0 0
server id 1 1
slave net timeout 3600 3600
skip external locking ON ON
skip networking OFF OFF
skip show database OFF OFF
slow launch time 2 2
socket /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock
sort buffer size 2097144 2097144
sql mode 0 0
table cache 512 512
table type MYISAM MYISAM
thread cache size 8 8
thread stack 126976 126976
tx isolation REPEATABLE-READ REPEATABLE-READ
timezone MSK MSK
tmp table size 33554432 33554432
tmpdir /tmp/ /tmp/
transaction alloc block size 8192 8192
transaction prealloc size 4096 4096
version 4.0.22-standard-log 4.0.22-standard-log
version comment Official MySQL RPM Official MySQL RPM
version compile os pc-linux pc-linux
wait timeout 28800 28800
__________________
RTFM (Уважаемые! Читайте документацию!)
| Формат времени GMT. Текущее время 04:11. | Показаны 15 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.