Asistență tehnică forum și server

Started by Ionut, September 26, 2016, 09:32:33 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

BIGRED1984

Salut, Ca un side-topic, chiar acum am avut eroarea, chiar pe acest topic si nu cred ca sunt chiar asa multi useri acum ... sau poate sunt .. exista statistici cu frecventa acestor erori?

"Connection Problems
Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later."

TibiV

Don't worry...
Se intampla tot timpul.
Daca este o noutate pentru tine, se cheama ca "ai avut noroc"....
Mama proștilor este mereu gravidă... :)

Ionut

Ieri a mers greu, nu inteleg de ce. Cred ca nu scapam fara un cont de gazduire VPS... trebuie sa ma lamuresc exact de pret/upgrade, tehnic ce este nevoie sa fac si daca rezolvam problema cu max_connections. Mai suferim un pic cu niste erori din cand in cand pentru inca o perioada.

:cheers:

hyp88

Ma poate ajuta cineva? Nu stiu cum sa atasez poze la o postare pe forum


Ionut


cristi5

Am vazut azi eroarea de cateva ori la rand. Un developer SMF recomanda sa punem ' . mysql_error() . ' in Sources/Errors.php ca sa vedem exact ce cod de eroare returneaza mysql.

https://theadminzone.com/threads/connection-problems-sorry-smf-was-unable-to-connect-to-the-database.104737/#post-717793

Ionut

#51
^ Am pus. :)
Mie azi nu mi-a dat deloc eroare. Depinde si cat de mult folosesti forumul. :lol:

Later edit:
Deci e vorba de baza de date care are prea multe conexiuni pe server. E simplu. Stiam deja asta. :)

cristi5

#52
Din cate inteleg e configurat FastCGI (pt ca am vazut ca in cazul ala nu se poate schimba php.ini la Bluehost)

Daca e asa, cu conexiuni persistente ar fi cazul asta:
http://php.net/manual/en/features.persistent-connections.php#95340

Atunci trebuie setata cumva variablila PHP_FCGI_CHILDREN la 14 sau mai putin. Din cate inteleg (la nginx cu php-fpm), variabila s-ar putea sa fie citita din mediul unix. Dar trebuie setata in mediul procesului fastcgi...

Din moment ce ei au control atat asupra server-ului HTTP cat si asupra mysql, eu cred ca aeasta neconcordanta intre PHP_FCGI_CHILDREN si mysql max_connections  e o eroare de configurare la ei, deci poti sa le-o semnalezi sub forma de bug/reclamatie, eventual cu errno care l-ai primit de la mysql.

Ai acces la un fisier .htacces acolo unde sunt fisiere html/php? 

frunzaverde

Quote from: cristi5 on October 27, 2016, 09:49:01 PM
Ai acces la un fisier .htacces acolo unde sunt fisiere html/php?

Da, exista .htaccess.
Cand esti amenintat cu ban permanent pentru ca ai criticat pozitia publica a unui politician, nu se mai poate numi conversatie sau forum, ci campanie electorala. Imi pare rau, dar din pacate, sunt nevoit va urez la revedere!

nirolf

Tocmai am primit această eroare:

Quote500 Server Error
A misconfiguration on the server caused a hiccup. Check the server logs, fix the problem, then try again. URL: http://forum.peundemerg.ro/index.php?topic=484.msg134471;topicseen

__dir

#55
@cristi, fiind shared stai in limitele date de admin (nefacute publice din motive de securitate), iar o crestere de trafic chiar nu o poti tine in frau pe un astfel de pachet

@nirolf, error 500 - probabil s-a facut o configurare si s-a restartat web_serverul, daca e doar o clipa e ok, permanenta e de rau :) (nu e cazul aici)

cristi5

#56
^ pai mie mi se pare ca e departe de a nu putea fi "tinut in frau" pt ca la reload raspunde rapid. Arata mai degraba a configuratie defectuoasa. Sigur, depinde de ce fac si celelalte aplicatii pe masina...

Eu lucrez numai cu VPS si inca nu inteleg pe deplin acest model. De exemplu, inteleg ca fiecare utilizator de sharing are propriul proces mysqld. E valabil acelasi lucru pt serverul http (cu ceva dispatcher pe portul 80) sau ala e "shared" la nivel de proces?

Chiar si asa, se poate alege handlerul de php din .htacces (fastcgi sau cgi obisnuit, etc). (o intrebare aici: in ce user merg aceste procese cgi sau fastcgi? Intr-un user shared?) Deci poate e vreo sansa de configurat acolo sa nu fie mai mult de 15 accese php simultan.

Daca nu, inseamna ca orice site shared bluehost cu mysql e limitat la 15 accese simultan.

Atunci singura solutie e limitarea din php. Nu stiu daca se poate "injecta" un alt conector mysql decat cel standard.

frunzaverde

Quote from: cristi5 on October 29, 2016, 03:00:24 PM
Daca nu, inseamna ca orice site shared bluehost cu mysql e limitat la 15 accese simultan.

Intrebat astazi - raspunsul lor a fost exact asta - este o limita de policy. Intrebati de ce (de mine) raspunsul a fost "nimeni n-ar trebui sa aiba nevoie de mai mult la tier-ul asta; daca aveti prea multi vizitatori, e o idee buna urcatul mai sus in ierarhia de hosting".

Quote from: cristi5 on October 29, 2016, 03:00:24 PM
Atunci singura solutie e limitarea din php. Nu stiu daca se poate "injecta" un alt conector mysql decat cel standard.

Se poate, PHP nu are un sinugr conector mysql, ci 3 (mysql, mysqli si PDO), ultimii doi fiind foarte robusti. Si motivul pentru care moare e la nivel de aplicatie, nu la nivel de server, SMF folosindu-l pe cel mai putin robust intr-un mod foarte fault intolerant.

In codul SMF, acolo unde deschide o conexiune, exista o linie de cod care arata cam asa : mysql_connect(...) or die(). SMF foloseste o biblioteca EXTREM de arhaica (si deprecata) pentru a se conecta la mysql (care a fost de altfel si eliminata in PHP 7). Daca in loc de asta ar folosi ceva mai modern gen PDO, care suporta cozi si care in loc de die() reincerca de n-ori cand intampina un time-out, nu am avea probleme.

Doar ca trebuie sa rescriem tot SMF-ul pentru asta. PHP-ul fiind PHP, mysqli si PDO nu sunt replacement-uri in place pentru mysql. Trebuie rescris totul, de la cum parseaza query-urile, la cum arata result-setul (care arata diferit in functie de cum arata conexiunea) etc. etc... Nu e trivial absolut deloc - am rescris eu cod mysql in mysqli (pe care manualul PHP il descrie ca fiind "aproape replacement in place") si a fost un efort imens de refactoring.
Cand esti amenintat cu ban permanent pentru ca ai criticat pozitia publica a unui politician, nu se mai poate numi conversatie sau forum, ci campanie electorala. Imi pare rau, dar din pacate, sunt nevoit va urez la revedere!

cristi5

#58
Cred ca exista o solutie fara sa ne atingem de SMF :)

- configuram php sa se conecteze la mysql pe un port custom cu conexiuni non-persistente (!)
- la portul respectiv, scris un mic server php care porneste din cron (am vazut ca bluehost ofera cron in php) care in mod normal deschide un tunel TCP la portul mysql standard (3306)
- dar daca sunt deja 15 tunele, intra in asteptare pana se elibereaza unul din tunele.

Practic asta realizeaza 15 conexiuni persistente, cu coada de asteptare.

O prima intrebare e daca se poate deschide un port in mod server la bluehost (server socket) . Deci trebuie incercat ceva de genul

server= socket_create_listen(7000)

unde 7000 e portul custom...

LE: nu cred ca acest adaptor trebuie scris neaparat in php (python poate e mai usor) si nici ca trebuie pornit din cron (se poate porni din ssh). Dar daca portul nu se poate deschide din php, nu se poate nici din alt limbaj...

frunzaverde

#59
Cel putin pe contul meu rezultatul e eroare 111 refused la orice port >1024 incercat (chestia cu serverul e foarte usor de implementat in PHP, nici macar nu e nevoie de un cron job. In documentatia lor spun ca trebuie sa cumperi ip dedicat pentru hosting, ceea ce practic te duce la VPS.

LE: Primit mail de la sysadmin bluehost cu ceva de genul : 'Don't try this again. Or else.'. Nu vor sa creasca numarul de conexiuni, bineinteles ca au blocat tot ce se poate bloca. Serverul passthrough pe care-l propui in sine este trivial de creat in PHP (documentatia e foarte buna: http://php.net/manual/en/sockets.examples.php)
Cand esti amenintat cu ban permanent pentru ca ai criticat pozitia publica a unui politician, nu se mai poate numi conversatie sau forum, ci campanie electorala. Imi pare rau, dar din pacate, sunt nevoit va urez la revedere!