Configurare webserver

GoldMember

Active Member
Registered
Full Member
Salut,
de multe ori cand imi configurez un dedicat pentru a tine piept unor accesari grele, am tot cautat pe google dupa solutii, de genul cati php childs sa am, sau cum sa fie configurata baza de date sa proceseze mai repede toate cererile samd. De curand mi-am dat dat seama ca poate dedicatul nu poate duce acele accesari, in special seara unde se aglomereaza. Asa ca intrebarea mea pentru cei care se pricep la optimizare ar fi, daca este posibil, ce configuratie ar trebui sa ai pentru cateva siteuri care insumeaza undeva la 4.000.000 de pageviews lunar, undeva la 1000 de persoane concomitent pe siteuri seara, conform analytics, excluzand evident botii. La configuratie ma refer la un minim de cpu/ram si daca s-ar putea si o recomandare pentru configuratiile http/php/sql.
 
Pentru a face fata la acest volum de trafic nu este doar nevoie de configurare pe server ci si pe partea de script. Daca acesta nu este optimizat bine, iti poate pune jos orice server. Doua linii de code si iti omor serverul indiferent cat de bun este.
O metoda informativa este sa vezi cat RAM consuma fiecare accesare, apoi multiplici cu numarul de accesari concurente si vezi cat ai nevoie.
Sa spunem ca ai un consum de 14MB RAM per accesare, atunci multiplicat cu 1000 = 14000 MB RAM, la care se adauga si ram consumat de OS, Panel si alte task-uri de pe server.
14 MB este un exemplu si din cate stiu un site normal wordpres consuma cam 50MB per accesare.
Pentru a putea oferi un sfat mai bun, ar trebui sa ne spui ce configuratie are serverul, OS si panel folosit, scripturi / platforma care ruleaza pe site-uri, etc.
 
Intr-adevar, la scripturile siteului inca lucrez, ma ajut de un plugin pt wordpress ce monitorizeaza activitatea sql sa am grija sa nu am slow query, asta de curand.
Media este de 50mb la wp, tocmai ce am verificat, dar acum imi dau seama ca am gresit cand am spus ca sunt 1000 concomitent, ma fereream la "LIVE ACUM" in dashboardul analytics, in schimb daca e sa iau tot de la ei accesarile / secunda ar fi undeva la 10-15 peak sa zicem. Aici nu intra si botii, care si aia consuma, trebuia sa fi verificat in putty sa vad cate procese sunt deschise, sa am idee mai exact. Totusi ce am observat eu este ca procesele php, fiecare in parte urca foarte mult cpu-ul, folosind top -c primesc cate un proces de 80% cpu. Actual folosesc openlitespeed, se descurca de minune totusi cu pluginul de cache pe care-l au ei, dar cand e vorba de cereri php din dynamic cache, se misca putin greu. Seara cand mai primesti si un influx mare de oameni (pica un site si vin la mine), chiar daca ai cache e nevoie de multe cereri php, care duc la sql, acesta este protejat cu redis, dar chiar si asa uneori da rateuri si pica efectiv tot serverul. Momentan stau pe un 8Gb ram octacore, dar am impresia ca trebuie sa fac upgrade. 2gb sunt alocati exclusiv sql-ului, 1gb lshttpd, restul lsphp, maxim 35 de procese. Sper ca am descris cat se poate de bine, ideea e ca desi prin aceasta configuratie nu ar trebui sa am ramul maxim atins, totusi reuseste sa mearga extrem de greu. Chiar si fara cache, ar trebui sa poata cara 10 cereri / secunda, dar phpul se ingreuneaza, incepe sa raspunda greu, probabil sql-ul il trage in spate si se face efectul snowball unde totul se blocheaza. Ideea este ca in teorie configul este ok, practic nu prea, de aceea vroiam sa pornesc intai cu un minim standard pentru un webserver la acest nivel, ca daca si acolo ar fi probleme,sa stiu sa elimin webserverul din ecuatie si sa ma focusez pe altele.

dI9xdJ2rStCwwXtKSf62Jw.png
 
Ultima editare de un moderator:
Cache de la cloudflare ajuta mult mai ales când e trafic mare unde setezi under attack și blochează 95% din bad connection.
La sql ridica valoarea la cache, setează slow query sa fie închise sau delay pentru a face prioritate la cele fast și dacă ai WordPress încearcă sa setezi sa nu scaneze întregul db ci tabelul care trebuie . În felul acesta se reduce mult din load și speed.
La cache plugin pe lângă cache files încearcă și cache sql query care sa le salveze static, asta îți va da un boost foarte mare.
La procese pe server setează ca cele blocate în procesare sa le dea kill automat pentru a elibera resurse .
Ridica și numărul de conexiuni concurente din apache sau nginx pentru a nu primi semnal de ocupat când se atinge numărul maxim. La fel și în mySQL ridicat numărul maxim care default este 200 din cate știu. Eu rulez la mySQL în general cu 500.
 
Eh aici se complica treaba. La cloudflare daca dau under attack am observat ca imi scade traficul drastic, lumea nu sta sa astepte 5 secunde sa fie verificate de ei, nu inteleg de ce.
Legat de sql, am transformat toate tabelele in innodb pentru perfomanta, si din cate stiu acestea nu functioneaza in sql cache. Slow query nu am auzit sa le poti "inchide", acestea vin ca un normal query dar prost executat de prin fisierele php.
"încearcă sa setezi sa nu scaneze întregul db ci tabelul care trebuie" - te referi la wp_query sau la ce? asta tot din php se face, daca la asta te referi, nu prea am inteles unde bati, daca te referi la altceva sau nu.
Cache pentru sql folosesc redis-ul, e un fel de front-end pentru sql, fara el imi iau crashuri des.
Semnale de ocupat nu primesc absolut deloc de la lshttpd, este perfect si pana acum nu am avut probleme de acest gen. Am atasat un mysqltuner daca ajuta la ceva.

Screenshot_1.jpg
 
Ultima editare de un moderator:
lumea nu sta sa astepte 5 secunde sa fie verificate de ei,
La multi stiu ca le-a crescut in special pentru timpul de load foarte mic, dar depinde la caz la caz. Plus daca scade mult inseamna ca atacul este real si doar ce ramane este trafic real.
folosesc redis-ul
Este bun daca stil sa-l folosesti bine, altfel nu te ajuta cu nimic.
Stiu un tip foarte bun in linux si nu recomanda daca nu ai cunostintele necesare pentru ca nu exista un config standard si gata, ci trebuie ajustat periodic pentru a avea o performanta buna.
"încearcă sa setezi sa nu scaneze întregul db ci tabelul care trebuie"
Wordpress ca default cand acceseaza db, o scaneaza toata pentru a prelua informatia si nu tabelul care trebuie. Asta se poate modifica din server si din script. De asta e bine sa faci cache la sql query static pentru a slava resurse si timp de executie.
Numarul de conexiuni este de 300, recomand sa ridici, care acum este utilizat 40%. RAM swap ai si daca da, ce marime are? Daca nu ai atunci sa aloci inca 5-8Gb ram.
La fel instaleaza un firewall csf + failban.
 
Redis e configurat ok, chiar si daca iei standard este ok. Cu el nu am avut niciodata probleme.
Nu am inteles cum este problema asta cu wordpressul, imi imaginez ca nu-s cretini aia de la wp dev team sa codeze prost, ai nevoie de un user, cauta in wp_users, nu in toate tabelele, despre ce vobim aici? Poate am inteles eu gresit la ce te referi. Daca stii exact care e problema, spune-mi sa ma uit unde trebuie in core-ul wp, dar imi imaginez ca e de cacao sa umbli acolo sa schimbi la fiecare update.
Conexiunile sunt 300 pentru ca maximul atins in ultimele 4 zile este de 121, ce sens ar avea sa pun 500? Rulez mysqltuner zilnic sa vad daca sunt probleme si la asta niciodata nu a fost. Swap am 1Gb si este deja alocat catre sql.
La firewall in schimb sunt paralel sincer, trebuie sa caut niste tutoriale ceva.
 
Poate e o intrebare stupida, dar daca pun clouflare-ul la under attack, asta nu inseamna ca nici google bot nu poate intra ?Sau clouflare lasa botii de genul google yahoo etc sa treaca?
 
Poate e o intrebare stupida, dar daca pun clouflare-ul la under attack, asta nu inseamna ca nici google bot nu poate intra ?Sau clouflare lasa botii de genul google yahoo etc sa treaca?
Nu iti pot raspunde dar stiu destui care stau cu site asa si nu au probleme in google, ba chiar din cate am vazut au un avantaj pentru ca pagina da un raspuns de incarcare foarte fast.
Cloudflare blocheaza tot ce crede ca este bad trafic si u are motiv sa blocheze google bot.
 
Externalizeaza ... pune elementele in servere diferite si in subdomenii diferite ...
De exemplu, daca ai un site cu poze multe, pune pozele pe un subdomeniu. Daca ai unul ce interogheaza DB intensiv ... pune doar DB-ul pe o masina dedicata tot cu subdomeniu...
Solutiile de cache, sunt iarasi foarte bine venite ... varnish de exemplu ...
 
Loading...
Back
Sus