Too many connections

10 отговора 366 прегледа
#1

Too many connections

Как мога да избегна този проблем при множество връзки? Благодаря предварително.

Отговор
в отговор на hrisunko #2

Re: Too many connections

За какво точно връзки става въпрос? И на каква система?

Отговор
в отговор на hrisunko #3

Re: Too many connections

$connection = @mysql_connect("bla","bla","bla")
or die ("Could not connect.");

Това ли е твоя код? Може би, ако виждаш това съобщение твърде често, трябва да вдигнеш max_connections=голямо_число, освен това помисли дали не ползваш pconnect (което опъва постоянна връзка)

Успех
bofh
Отговор
в отговор на Lupi #4

Re: Too many connections

Става дума за връзка MySQL. Мился, че става, когато повечко хора извикат файла в този момент и той отнася повече запитвания към базата данни.

Отговор
в отговор на bofh #5

Re: Too many connections

Ами не съм чувал за pconnect. Можеш ли да ми обясниш как действа и как се използва?

Отговор
в отговор на hrisunko #6

Re: Too many connections

mysql_pconnect всъщност е функцията... ами има 2 разлики: не можеш да разкачиш такава връзка, даже с mysql_close, но пък не създава нова връзка, ако вече има такава към същия сървър, със същите login & pass... само дето не всички сървъри го поддържат...

от друга страна прекаляване с pconnect не ми звучи супер сериозно, ако нямаш повече login-и от разрешени връзки... а и не всички сървъри разрешават pconnect...

ViruS
Отговор
в отговор на ViruS #7

Re: Too many connections

1) @ пред mysql_connect ще подтисне досадните съобщения.(виж моя код горе)
2) промяната на max_connections при пускането на демона на mySQL-a ще позволи повече от 100 (това е стойността по подразбиране) връзки към сървер-а
3) ако ползваш (имаш възможността да ползваш перманента връзка) към сървера е хубаво да го избереш като решение (опъването на връзка е едно от най-бавните неща) pconnect проверява дали няма отворена връзка вече към същия хост, със същата парола или потребителско име и ако има такава ползва нея т.е връща ти нейният идентификатор. ако незнаеш дали имаш възможност за ползването на pconnect можеш да ползваш phpinfo() и да погледнеш за Allow Persistent. Това дали ще ползваш тази функция си е лично твое решение,зависи от това което искаш да направиш и така нататък.

ако нещо не се получи като хората можеш да пробваш примерно с

if($fp = fsockopen($hostname, 3306, &$errno, &$errstr, $timeout)){
fclose($fp);

дали все още можеш да се вържеш към сървера (т.е все още си под въпросните 100 връзки)

Има още 100 неща по случая, ако продължаваш да имаш проблеми пиши.

bofh
Отговор
в отговор на bofh #8

Re: Too many connections

Shtom ti dawa takowa syobshtenie i imash po-malko ot 150 konkurentni usera w w prodylgenie na okolo 10s, to togawa pogledni si normalno dali nqmash greshki nqkyde po scripta. Ne znam dali PHP trqbwa da mu zatwarqsh konekciite no ako e po podrazbirane, i ima takawa funkciq ZATWARQI GI SLED RABOTA S BAZA i se staraj da izpolzwash edna i syshta konekciq za wsichkite ti operacii. Kakto be spomenato w po-goren posting towa (otw na konekc. kym DB) e koshmarno bawno i towareshto neshto. Taka che ako imash nugda ot golqma skorost i mnogo konkurentni useri deistwitelno izpolzwaj persist connection.
I drugoto neshto koeto e dobre da poglednesh dali ne otwarqsh konekcii rekursiwno or iteratiwno...
Oh malko matematikwenicheski ama dano si me razbral...

Derazaj

JAVA lets make things badly and slow!!
Отговор
в отговор на bofh #9

Re: Too many ....

Malko korekcii:
1. mysql_connect i myxql_pconnect na praktika ne davat nikava razlika v skorostta.
MySQL ima nai-burzia connect ot vsichki DB - ne znam zashto
2. mysql_pconnect pochti vinagi otvaria nova vruzka - prichinite sa dosta
3. pconnect (ne samo ot php) vodi do:
Aborted connection .... (Got an error reading communication packets)
v mysql.err log. Ne e neshto osobeno ama e nepriatno.

Goliama razlika m-u connect i pconnect ima v izpolzvaneto na LOCK TABLES i CREATE TEMPORARY TABLE ....;

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #10

Re: Too many ....

10xz salle :)))))

Отговор
в отговор на hrisunko #11

Благодаря много на всички!

Благодаря ви за помощта. Проблема беше, че към съответния файл добавях други, като всеки един от тях осъществява връзка с базата данни и така изведнъж се оказват 5-6 връзки. И така в един момент сървъра се е затруднил да изпълни толкова много заявки и показа този надпис.

Отговор