Puncte:0

Serverul Apache este foarte lent pentru trafic mare

drapel sa

Folosesc Apache 2 pe instanța AWS ec2. Am aplicație de echilibrare a încărcăturii cu 2 instanțe/servere atașate. Fiecare tip de instanță este m5.8XLarge.

Aplicația mea este dezvoltată în Laravel, folosesc RDS.

Am 300.000 de vizitatori pe zi și 10.000 de vizitatori la un moment dat. Site-ul meu este foarte lent și timpul de răspuns inițial al serverului este foarte mare de până la 8 secunde.

Notă: nu pot folosi autoscaling deoarece conținutul meu este dinamic și se modifică frecvent. Autoscaling folosește vechiul IMG.

Am mai jos setări suplimentare pentru fișierul httpd.conf

 MaxKeepAliveRequests 500
 Keepalive On
 KeepAliveTimeout 5
 Căutarea numelui gazdei este dezactivată

<IfModule prefork.c>
  StartServers 5
  MinSpareServers 20
  MaxSpareServers 40
  MaxClients 200
  MaxRequestsPerChild 4000
</IfModule>

Cum pot să îmbunătățesc viteza serverului și să permit apache să gestioneze multă încărcare/vizitatori

vidarlo avatar
drapel ar
Care este blocajul tău? Baza de date, Apache sau timpul de procesare pentru aplicația dvs.?
Muhammad Shafiq avatar
drapel sa
Timpul de răspuns al serverului. Apache plus timp de procesare. Serverul ia prea mult timp pentru a răspunde utilizatorului
vidarlo avatar
drapel ar
Da, acesta este rezultatul final. Dar ai idee cum se construiește acest timp? Așteaptă baza de date, este ocupat cu procesarea aplicației sau este ocupat să citească de pe disc?
Tim avatar
drapel gp
Tim
Trebuie să petreci ceva timp pentru a descoperi care este limita.De asemenea, trebuie să utilizați un model cloud pentru implementare, de exemplu, plasând imaginile partajate pe EFS, mai degrabă decât pe servere. În mod ideal, serverele din cloud ar trebui să fie considerate efemere (temporare) și să poată fi înlocuite în orice moment, astfel încât să puteți scala mai ușor în sus și în jos. Scalarea cu servere mai mici și mai ieftine reduce costurile la încărcare redusă și ajută la evitarea blocajelor pe un singur server.
Muhammad Shafiq avatar
drapel sa
Folosesc S3 și CloudFront ca CDN pentru imagini și fișiere. Pe pagina de start nu există conexiune la baza de date. Deci, singurul lucru de verificat dacă aplicația Apache și laravel. Sugerați să convertiți apache mpm în worker?
Puncte:0
drapel cn

Ar trebui să te uiți la utilizarea unui Auto Scaling Group pentru a scala aplicația pe orizontală, dacă este posibil. Un singur server va atinge întotdeauna o limită de performanță - de aceea folosim echilibratori de încărcare. Dacă utilizați deja 2 instanțe, adăugați mai multe! Atâta timp cât arhitectura ta o va susține.

Dacă nu, puteți scala vertical utilizând o instanță EC2 mai mare.Nu spui ce instanță folosești în prezent, așa că nu pot da nicio recomandare.

Muhammad Shafiq avatar
drapel sa
Am adăugat mai multe explicații la întrebare. Nu pot folosi scalarea automată deoarece conținutul meu este dinamic și se schimbă frecvent. Autoscaling utilizează vechi IMAG-uri. De asemenea, folosesc 2 servere de tipuri m5.8xlarge ec2
Muhammad Shafiq avatar
drapel sa
Îmi sugerați să comut apache la mpm_worker_module? și care ar trebui să fie setările posibile pentru asta?
drapel cn
Nu înțeleg de ce „conținutul meu este dinamic și se schimbă frecvent” vă oprește scalarea automată.
Muhammad Shafiq avatar
drapel sa
AWS Auto Scaling folosește imaginea instanței pentru a lansa noi instanțe. Acea imagine va avea conținut vechi, astfel încât instanța nou lansată va avea și conținut vechi.Din conținut înseamnă dacă încarc sau actualizez unele imagini, fișiere html, css sau php pe site-ul meu
drapel cn
Puteți utiliza datele utilizatorului atunci când furnizați imaginea pentru a personaliza implementarea. De asemenea, puteți pune elemente statice, cum ar fi imagini, în S3 și le puteți actualiza separat. Cel mai bine ar fi să investigați o anumită formare pe AWS prin intermediul unui furnizor online, deoarece vă poate oferi mai multe informații de fundal decât putem aici.
vidarlo avatar
drapel ar
Practic, încercați să implementați un mod *tradițional* într-un mediu cloud. Nu face asta. Utilizați cloud - separați datele și logica, astfel încât logica să poată fi un container docker care accesează date - fie static din S3, fie dinamic dintr-o bază de date. Acest lucru facilitează scalarea; rotește mai multe recipiente atunci când este necesar. Aș fi de acord cu @shearn89 - învățați-vă cum să utilizați cloud și cum să scalați într-un mediu cloud.
drapel jp
Optimizarea fără a ști care este blocajul real este o pierdere de timp și resurse. Determinați mai întâi care este utilizarea reală a resurselor și saturația.
Muhammad Shafiq avatar
drapel sa
Vorbesc despre viteza paginii de start, pe pagina de start nu există conectivitate la baza de date. Trebuie să convertesc apache MPM din prefork în worker?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.