Dinten ayeuna kuring sumping nyarios deui ka anjeun ngeunaan salah sahiji layanan wéb anu paling sering dianggo di dunya: Pangladén wéb Apache2.
Mangrupikeun topik anu parantos diobrolkeun sababaraha kali, tapi ayeuna kuring badé nyarioskeun anjeun ngeunaan fitur sanés anu diperhatoskeun ku jasa ieu: Wates sambungan sakaligus. Henteu janten masalah upami urang ngagaduhan dasar atanapi pesawat ruang angkasa kalayan prosesor i7 sareng ram 32 GB ...
Watesan konéksi sakaligus bakal sami sami kecuali upami urang nyandak ukuran anu saluyu, anu hartosna upami urang hoyong seueur jalma anu nyambung dina waktos anu sami, urang henteu ngan ukur butuh hardware anu saé, tapi ogé konfigurasi anu saé.
Dina hal ieu henteu perlu dipasang nanaon, sadayana dumasar kana konsép saderhana anu kedah diperhatoskeun pikeun ngonpigurasikeun apache; konsep anu kedah jelas pisan sateuacan hoyong ngarobih.
Hal anu mimiti dipikirkeun nyaéta: Naon kapasitas tim kuring gaduh? Sabaraha konéksi sakaligus anu tiasa didukung ku alat-alat kuring upami kuring maksa sabisa-bisa? Sadaya ieu gumantung kana hiji faktor; RAM (Mémori aksés acak).
Langkung ageung RAM, jumlah konéksi langkung ageung, sanaos teu aya nilai anu tetep (nyaéta X klién pikeun unggal X ram), éta sababna mimitina penting pikeun ngalakukeun sababaraha itungan leutik dina wéb kami, kalayan supados terang watesan urang.
Hal kahiji anu anjeun kedah terang nyaéta sabaraha mémori RAM rata-rata nyéépkeun unggal sambungan kana Apache, kumargi masing-masing sambungan anu didamel sigana konsumsi RAM dina sistem ... Jelas henteu sadayana konéksi nganggo ram anu sami, anu anjeun kedah ngadamel média ... Sadaya ieu tiasa didapet ku paréntah ieu:
ps -ylC apache2 --sort: rss | awk '{SUM + = $ 8; I + = 1} TAMAT {print SUM / I / 1024} '
Hasil anu diala bakal diwakilan dina megabyte sareng tiasa bénten-bénten gumantung kana jumlah konéksi aktif, jinis halaman anu diakses, sareng sajabana ... Ku sabab éta, disarankeun pikeun ngalaksanakeun tés kalayan sababaraha tab anu kabuka; masing-masing nunjukkeun eusi anu béda-béda upami tiasa. Dina kasus kuring, salaku conto, hasilna parantos 9.5458, anu upami urang buleudkeun ka luhur bakal 10 MB RAM dikonsumsi rata-rata per sambungan.
Éta ogé penting pikeun terang sabaraha RAM anu dikonsumsi ku sésa prosés anu aktip dina sistem, kumargi jasa wéb sanés hiji-hijina anu ngalir dina sistem operasi sareng perlu ngantepkeun mémori RAM gratis dina sérver supados tiasa ngaéksekusi. sésa padamelan. Ieu tiasa didapet ku paréntah anu dipidangkeun di handap ieu:
ps -N -ylC apache2 --sort: rss | awk '{SUM + = $ 8} TAMAT {print SUM / 1024}'
Hasil anu diala ogé bakal diwakilan dina megabyte, sareng éta bakal nunjukkeun ka urang persis jumlah RAM anu dikonsumsi ku sésa prosés; bisi kuring 800 MB. Kalayan inpormasi ieu kami tiasa ngadamel perhitungan umum ngeunaan jumlah sambungan sakaligus anu urang tiasa gaduh; Kuring ngitung yén urang bakal kéngingkeun ku cara operasi anu saderhana.
(RAMTOTAL - RAM_RESTOPROCESOS) / RAM_POR_CONNEXIÓN
Kalayan rumus ieu di tangan, hayu urang bayangkeun yén urang gaduh komputer anu gaduh RAM 4 GB, nyaéta 4096 MB sareng komputer urang parantos nunjukkeun hasil anu disebutkeun di luhur; itunganana nyaéta:
(4096 - 800) / 10 = 329 sambungan sakaligus
Masalah sareng perhitungan ieu nyaéta yén salah sahiji teuing ekstrim, sabab éta bakal ngonsumsi sadayana RAM (ngajantenkeun server nganggo swap) sareng ogé, upami ngagaduhan database, sapertos MySQL atanapi anu sanésna, koneksi kana éta ogé bakal meakeun RAM , janten nomer anu diala tiasa mumpuni salaku nomer utopian. Ku alatan éta, pikeun ngabébaskeun mémori pikeun prosés tambahan anu mungkin sareng ogé ngémutan kamungkinan konéksi kana basis data dilaksanakeun, kami bakal ngirangan jumlah konéksi kana 250.
Ayeuna kami ngagaduhan jumlah koneksi anu sakaligus maksimum, urang kedah nyiapkeun Apache kanggo tiasa nampi nomer ieu, anu dilakukeun dina file konfigurasi tina telepon ieu. Apache2.conf, anu di-host di / jsb / apache2.
File anu dimaksud nuturkeun struktur dumasar kana modul, masing-masing ku ngaran anu saluyu, tapi urang ngan ukur resep kana salah sahiji, anu namina mpm_prefork_module. Modul anu dimaksud gaduh data ieu sacara standar:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0
Modul ieu ngagaduhan séri parameter anu penting pisan, sanaos aya salah sahiji anu khususna bakal dipikaresep ku urang, disebut MaxClients. Parameter ieu nunjukkeun jumlah maksimum sambungan anu sakaligus sareng kedah dirobih janten 250.
Hiji detil anu kedah diémutan nyaéta yén nalika nilai sanés standar ditetepkeun dina parameter anu kasebut, perlu ditambihan anu hiji deui sateuacanna ieu. Parameter ieu disebat ServerLimit sareng netepkeun wates koneksi anu sérver tiasa "tahan" sanajan éta di luar wates éta.
Parameter ServerLimit kedah rada luhur tibatan MaxClients sareng didieu, sabab aya sakedik rohangan pikeun manuver, wates 270. Ieu bakal ngajantenkeun modulna sapertos kieu:
StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 270 MaxClients 250 MaxRequestsPerChild 0
Ayeuna ngan ukur perlu ngabalikan jasa Apache nganggo paréntah:
/etc/init.d/apache2 balikan deui
Kalayan ieu kami parantos tiasa nampi sérver wéb anu dioptimalkeun kami.
Salam.
21 koméntar, tinggalkeun anjeun
Nuhun kana tulisanana!
Abdi resep anjeun mendakan éta mangpaat.
Salam.
Aya cara pikeun gugus Apache sareng dua sérver, naha anjeun tiasa ngajelaskeun kumaha jalanna?
Sanaos kuring parantos maca sababaraha téori ngeunaan éta, kuring henteu kantos nerapkeunana pikeun latihan. Masih, meureun tulisan ieu tiasa masihan anjeun sababaraha hidayah pikeun hal ieu, sanaos kuring ngulang yén kuring henteu ngagaduhan kasempetan pikeun nerapkeunana:
http://www.muspells.net/blog/2011/04/alta-disponibilidad-con-apache2-y-heartbeat-en-debian-squeeze/
Anjeun parantos lami naros, upami anjeun henteu ngarengsekeun; Kuring gaduh skéma balancing sareng pihak katilu anu bertindak salaku sistem file, anjeun nunjuk polder anu aya di var / www / html / (dina kasus kuring) kana sistem file, janten aranjeunna ngabagi inpormasi anu sami, sareng anjeun panginten bakal meryogikeun ip virtual anu ngaréspon sareng alihan ka ips tina apache, pikeun ieu anjeun tiasa ngeusian haproxy sareng upami anjeun hoyong éta kasadiaan tinggi anjeun tiasa ngahijikeun keepalive upami salah murag, anu sanésna terus ngaréspon, atanapi ogé upami anjeun parantos gaduh domain pikeun aplikasi, anjeun tiasa nyaimbangkeun sareng pound ngalakukeun backends ka duanana server, pikeun kasus anu khusus sapertos moodle atanapi aplikasi tangtu anu nyambungkeun kana database dina MySQL, anjeun kedah nyiptakeun pangguna per server aplikasi anu nunjuk kana basis data anu sami.
Hatur nuhun pisan kana postinganna, anjeun leres leres, ram mangrupikeun itungan utami, sanaos kuring ngabayangkeun ogé kami ngitung jumlah maksimum prosés anu tiasa ditanganan ku prosésor (tangtosna, mimiti ngalakukeun itungan mémori utama) sareng kumaha disk na tiasa disebarkeun heuras (Conto partisi / var = 1TR).
Anjeun leres; sadayana penting, sapertos kontrol suhu diantarana. Jelas prosesor anu kuat tiasa ngaéksekusi sajumlah seueur tugas sakaligus kalayan épisiénsi anu hébat, tapi tujuan tina tulisan ieu nyaéta ngajelaskeun pentingna RAM anu aya hubunganana sareng jumlah sambungan anu sakaligus.
Cara anu saé pikeun ngendalikeun sadaya faktor ieu sareng tingali naha prosesor urang henteu jenuh atanapi upami urang gaduh RAM gratis sakedik, nganggo skrip bash. Meureun tulisan ieu kuring ngadamel sababaraha dinten ka pengker ngeunaan éta bakal pikaresepeun pikeun anjeun, anu kuring tinggalkeun anjeun dina tautan ieu; Mangrupikeun monitoring global tapi panginten pikaresepeun pikeun batur:
http://bytelearning.blogspot.com.es/2015/07/controlando-la-salud-del-equipo-con-bash.html
Wasalam
Catetan anu saé, hatur nuhun pisan!
Hatur nuhun pisan! Kuring miharep anjeun parantos tiasa ngamangpaatkeun éta.
Abdi henteu hoyong janten brengsek ...
… Tapi ku ningkatkeun jumlah koneksi anjeun henteu kéngingkeun langkung rentan tina serangan DDoS?
Éta sanés patarosan kirik anu sepi. Nyatana nyaéta ku ningkatkeun jumlah koneksi sakaligus, urang sawaréh nguatkeun Apache ngalawan serangan DDOS, kumargi anjeun kedah tumut-ngemutan yén jumlah koneksi simultan maksimum anu ditetepkeun dina server mangrupikeun total koneksi maksimum, sanés anu asalna hiji pangguna. Janten, nalika di awalna kami ngan ukur tiasa ngadukung 150 sambungan sasarengan (naha éta sambungan tina sumber anu sah atanapi henteu) ayeuna urang tiasa ngandelkeun sajumlah palanggan anu ngadukung, ngabutuhkeun koneksi anu langkung seueur dina waktos anu sami janten tanpa jasa. Jelas, nambahan jumlah koneksi anu maksimal sanés cara ngajaga diri tina jinis serangan ieu, tapi anjeun kedah nerapkeun kabijakan firewall. Upami, contona, layanan wéb anu anjeun badé pasang badé kakeunaan internét, ukuran kaamanan anu tiasa dilaksanakeun bakal janten tambihan garis ieu ka firewall kami:
iptables -A INPUT -p tcp –syn –dport 80 -m konkrit –connlimit-upto 10 -m state –state NEW -j ACCEPT
iptables -A INPUT -p tcp –portport 80 -m state –state DIadegkeun, KAUBUNGAN -j DITERIMA
iptables -A INPUT -p tcp -dport 80 -j DROP
Salah sahiji ciri serangan DDoS nyaéta panyerang tiasa némbongan ngirim paket tina sababaraha arah anu béda, anu nyegah aliran bungkus tina ngan ukur asalna tina hiji arah.
Anjeun leres dina hartos yén firewall sapertos anu kuring parantos atur henteu épisién pisan ngalawan serangan DDOS, sabab éta asalna tina sumber anu béda. Masih, langkung saé dibatesan jumlah konéksi janten 10 pikeun masing-masing sumber ieu tibatan henteu ngagaduhan wates, sahingga masing-masing sumber tiasa netepkeun saratus sambungan atanapi langkung.
Bisi naon waé, ikét patarosanna nyaéta yén konéksi anu langkung seueur sakaligus dirojong ku server, langkung hésé pikeun ditumpeskeun ku serangan DDOS, anu bakal ngajantenkeun hésé pikeun halaman na diturunkeun ku panyerang.
Salam.
Saé. Pikeun ayeuna kuring teraskeun sareng NGINX dina situs abdi supados henteu nyiksa VPS anu kuring gaduh.
Pos anu saé @Drassill!
Abdi hoyong nyumbangkeun hal anu langkung seueur statistik tibatan konfigurasi.
Sanaos cara anu paling gampang sareng gancang pikeun ngitung parameter konsumsi nyaéta ku hartosna, panginten urang tiasa langkung ketat sareng nganggo "median" tibatan "mean". Naon anu bakal nyalametkeun urang? Éta nomer némbak upami sambungan parantos nyéépkeun seueur mémori. Salaku conto, anggap klien ieu anu nyayogikeun nilai-nilai ieu, dina unit memori anu aranjeunna pikahoyong (KB, MB, MiB, jst):
10, 15, 150, 5, 7, 10, 11, 12
Rata-rata bakal masihan sakitar ~ 30
Sareng ieu kusabab urang gaduh ekstrim anu ageung pisan (150), sareng itunganna gélo. Median diwangun ku mesen data ieu, ngabagi jumlah sampel ku 2 (pusat kami) teras kéngingkeun jumlah posisi éta. Kalayan ieu kami bakal ngagaduhan anu sapertos
5, 7, 10, 10, 11, 12, 15, 150
Janten hartosna kami nyaéta: 8/2 = 4 nyaéta ~ 10
Di dieu anjeun tiasa ningali yén henteu paduli kumaha edanna, éta bakal salawasna masihan kami nilai anu langkung réalistis. Upami urang nambihan pelanggan anu nyéépkeun 200, médiana urang bakal 11, sedengkeun rata-rata tiasa lebet …….
Éta ngan ukur kontribusina, sareng éta pisan debatable, sabab ku sambungan na henteu ngaco.
Rangkul jalma linuxera 🙂
Halo, kuring ngalaman masalah dina sérver khusus kuring, sareng éta unggal waktos sakitar sakitar 250 jalma online ngadeukeutan, numutkeun google analytics sacara real waktos, sérver kuring sapertosna runtuh sareng sambungan janten lambat dugi turun sambungan kana halaman wéb sareng henteu kantos unggah langkung seueur tibatan jumlah pangguna online, tapi nalika kuring ningali kinerja server khusus nyaéta ram 8gb éta nunjukkeun 10% panggunaan, CPU: 5% panggunaan sareng hard disk di: 1.99 % pamakean.
Dupi anjeun tiasa ngabantosan abdi? Abdi henteu mendakan naon anu kedah dilakukeun, naha ngalakukeun léngkah-léngkah ieu solusina?
Saé Carlos.
Masalah anu anjeun ngajelaskeun umum pisan nalika sérver henteu leres disiapkeun. Server anjeun sigana bakal nampi sajumlah koneksi sakaligus anu langkung alit sareng nalika ngahontal 250 sambungan éta bakal ngadat. Saatos manual anjeun kedah tiasa ngajawab masalah, sanaos upami anjeun gaduh database dina server éta anjeun ogé kedah ngaoptimalkeun database éta.
Salam.
Drassill, kuring parantos ngalaksanakeun konfigurasi anu anjeun sebutkan sareng éta parantos nyugemakeun, kamari kuring ngahontal 280 pangguna online sareng sérver henteu kacilakaan, kuring resep pisan kana hasil ieu, sareng kuring ogé hoyong ngalakukeun hal anu sanés anu anjeun paréntah pikeun ngaoptimalkeun basis data, ¿ Kumaha kuring ngahontal ieu?
Konsép basis data cukup kabuka; ngagunakeun MySQL henteu sami sareng postgres (contona). Jelas kuring henteu terang sadayana basis data; Kuring parantos nyobian MySQL sareng postgres, sareng kanaékan koneksi sakaligus dina ieu dumasarkeun kana parameter max sambungan; optimasi tina MySQL bakal dilakukeun dina /etc/my.conf sareng parameter max sambungan kedah dirobih (diantarana). Pikeun postgres waé, kuring gaduh tulisan dina blog kuring anu ngajelaskeun kumaha ngaoptimalkeun éta anu tiasa manpaat pikeun anjeun atanapi anu tiasa anjeun anggo salaku rujukan pikeun database anjeun:
http://bytelearning.blogspot.com.es/2016/02/postgresql-una-alternativa-mysql-en.html
Salam.
Halo, nalika kuring ngalungkeun paréntah anu munggaran, éta nunjukkeun kuring nilai 0. Naon waé éta?
Hatur nuhun kanggo postingan ieu.