Apache дахь зэрэгцээ холболтыг хэрхэн нэмэгдүүлэх вэ

Өнөөдөр би тантай дэлхийн хамгийн их ашиглагддаг вэб үйлчилгээний нэг болох Вэб серверийн талаар дахин ярилцахаар ирлээ Apache2.

Энэ бол олон удаа яригдаж байсан сэдэв боловч одоо энэ үйлчилгээнд анхаарал хандуулах өөр нэг онцлог шинжийн талаар танд хэлье. Зэрэгцээ холболтын хязгаар. Бидэнд маш энгийн эсвэл i7 процессортой, 32 GB RAM-тай сансрын хөлөг байгаа эсэх нь хамаагүй ...

Хэрэв бид зохих арга хэмжээг авахгүй бол нэгэн зэрэг холболтын хязгаар үргэлж ижил байх бөгөөд энэ нь олон хүнийг нэгэн зэрэг холбогдуулахыг хүсвэл сайн техник хангамж төдийгүй сайн тохиргоо шаардагдана гэсэн үг юм.

Энэ тохиолдолд ямар нэгэн зүйл суулгах шаардлагагүй бөгөөд бүх зүйл apache-ийг тохируулахын тулд харгалзан үзэх ёстой энгийн ойлголтууд дээр суурилдаг; өөрчлөлт оруулахыг хүсэхээсээ өмнө маш тодорхой байх ёстой ойлголтууд.

apache2_logo

Хамгийн түрүүнд бодох зүйл бол: Миний баг ямар чадавхтай вэ? Хэрэв би аль болох хүчээр шахаж чадвал миний тоног төхөөрөмж хэдэн зэрэг холболтыг дэмжиж чадах вэ? Энэ бүхэн нь ганц хүчин зүйлээс хамаарна; RAM (Санамсаргүй хандалтын санах ой).

RAM нь их байх тусам холболтын тоо нэмэгддэг, гэхдээ тогтмол утга байдаггүй (өөрөөр хэлбэл X ram тус бүрт X клиент), тиймээс хамгийн түрүүнд вэб сервер дээрээ зарим жижиг тооцоог хийх нь чухал юм. бидний хязгаарыг мэдэхийн тулд.

Таны мэдэх ёстой хамгийн эхний зүйл бол Apache-тай холбогдсон холболт бүр дунджаар хичнээн их RAM зарцуулдаг вэ? Учир нь холболт бүр систем дэх RAM-ийн тодорхой хэрэглээг шаарддаг тул бүх холболтууд ижил RAM ашигладаггүй тул үүнийг хийх шаардлагатай болно. зөөвөрлөгч ... Энэ бүгдийг дараах тушаалаар авах боломжтой.

ps -ylC apache2 - эрэмбэлэх: rss | awk '{SUM + = $ 8; I + = 1} END {хэвлэх SUM / I / 1024} '

Гаргасан үр дүн нь мегабайтаар илэрхийлэгдэх бөгөөд идэвхитэй холболтын тоо, хандсан хуудасны төрөл, гэх мэтээс хамаарч өөр өөр байж болно ... Тиймээс тестийг янз бүрийн цонх нээж хийхийг зөвлөж байна. боломжтой бол өөр өөр агуулгыг харуулсан тус бүрдээ. Жишээлбэл, миний хувьд, үр дүн нь 9.5458 болсон бөгөөд хэрэв бид үүнийг хамгийн дээд талд нь хүргэх юм бол 10 MB Нэг холболт тутамд дунджаар RAM ашигладаг.

Вэб үйлчилгээ нь зөвхөн үйлдлийн систем дээр ажилладаг тул үнэгүй RAM санах ойг үлдээх шаардлагатай тул системд байгаа бусад процессууд хэр их RAM зарцуулдаг болохыг мэдэх нь бас чухал юм. серверийг ажиллуулснаар үлдсэн даалгавруудыг гүйцэтгэх боломжтой болно. Үүнийг доор харуулсан тушаалын дагуу авах боломжтой.

ps -N -ylC apache2 --sort: rss | awk '{SUM + = $ 8} END {хэвлэх SUM / 1024}'

Олж авсан үр дүн нь мегабайтаар илэрхийлэгдэх бөгөөд үлдсэн процессуудын зарцуулсан RAM-ийн хэмжээг бидэнд маш нарийн харуулах болно; Миний хувьд 800 MB. Энэ мэдээллийн тусламжтайгаар бид нэгэн зэрэг холбогдож болох тооны ерөнхий тооцоог хийх боломжтой байв. Бид маш энгийн үйлдлээр олж авна гэж тооцоолж байна.

(RAMTOTAL - RAM_RESTOPROCESOS) / RAM_POR_CONNEXIÓN

Энэхүү томъёог гартаа барьснаар бид 4 GB RAM-тэй компьютертай, өөрөөр хэлбэл 4096 MB хэмжээтэй компьютертай бөгөөд дээр дурдсан үр дүнг манай компьютер харуулсан гэж төсөөлье. тооцоо нь:

(4096 - 800) / 10 = 329 нэгэн зэрэг холболт

Энэ тооцоонд тулгараад байгаа асуудал бол хэт туйлширсан явдал юм, учир нь энэ нь бүх RAM-ийг (серверийг своп ашиглах) ашигладаг тул MySQL эсвэл бусад бусад өгөгдлийн сантай бол түүнтэй холбогдох холболтууд бас ашиглагдах болно. RAM, тиймээс олж авсан тоо нь утопын тоонд хамрагдах боломжтой. Тиймээс, нэмэлт процессуудад зориулж санах ойг чөлөөлөх, мэдээллийн баазтай холболт хийх боломжийг харгалзан үзэхийн тулд холболтын тоог багасгах болно. 250.

Одоо бид хамгийн их тооны нэгэн зэрэг холболттой болсон тул энэ дугаарыг хүлээн авах боломжтой болгохын тулд Apache-г бэлдэх хэрэгтэй бөгөөд энэ дуудлагын тохиргооны файлд хийгдэх болно. apache2.conf, байрладаг / etc / apache2.

Энэ файл нь дээр үндэслэсэн бүтцийг дагаж мөрддөг модулиуд, тус бүр нь харгалзах нэртэй байх боловч бид зөвхөн тэдний хэн нэгнийх нь нэрийг л сонирхох болно  mpm_prefork_module. Асуудалтай модуль нь дараахь өгөгдөлтэй байдаг:

StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0

Энэхүү модуль нь хэд хэдэн маш чухал параметрүүдтэй байдаг боловч эдгээрийн нэг нь биднийг сонирхож, сонирхож болох нэг зүйл юм MaxClients. Энэ параметр нь нэгэн зэрэг холболтын хамгийн их тоог зааж өгдөг бөгөөд үүнийг өөрчлөх шаардлагатай 250.

Нэг параметрийг харгалзан үзэх нь өгөгдсөн параметрээс бусад утгыг зааж өгөхөд зөвхөн үүнээс өмнө өөр нэгийг нэмэх шаардлагатай болно. Энэ параметрийг нэрлэдэг ServerLimit мөн хязгаараас хэтэрсэн ч гэсэн серверийн "барьж" чадах холболтын хязгаарыг тогтоодог.

ServerLimit параметр нь үргэлж MaxClients-ээс бага зэрэг өндөр байх ёстой, учир нь маневр хийх зай багатай, хязгаар нь 270. Энэ нь модулийг иймэрхүү харагдуулах болно:

StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 270 MaxClients 250 MaxRequestsPerChild 0

Одоо зөвхөн дараах тушаалыг ашиглан Apache үйлчилгээг дахин эхлүүлэх шаардлагатай болно. 

/etc/init.d/apache2 дахин эхлүүлэх хэрэгтэй

Ингэснээр бид аль хэдийн оновчтой вэб серверээ ашиглах боломжтой болсон.

Сайн байцгаана уу.


Нийтлэлийн агуулга нь бидний зарчмуудыг баримталдаг редакцийн ёс зүй. Алдааны талаар мэдээлэхийн тулд товшино уу энд байна.

21 сэтгэгдэл, үлдээгээрэй

Сэтгэгдэлээ үлдээгээрэй

Таны и-мэйл хаяг хэвлэгдсэн байх болно. Шаардлагатай талбарууд нь тэмдэглэгдсэн байна *

*

*

  1. Мэдээллийг хариуцах: Мигель Анхель Гатан
  2. Мэдээллийн зорилго: СПАМ-ыг хянах, сэтгэгдлийн менежмент.
  3. Хууль ёсны байдал: Таны зөвшөөрөл
  4. Мэдээллийн харилцаа холбоо: Хуулийн үүргээс бусад тохиолдолд мэдээллийг гуравдагч этгээдэд дамжуулахгүй.
  5. Өгөгдөл хадгалах: Occentus Networks (ЕХ) -с зохион байгуулсан мэдээллийн сан
  6. Эрх: Та хүссэн үедээ мэдээллээ хязгаарлаж, сэргээж, устгаж болно.

  1.   зетатино гэж хэлэв

    Бичлэгэд баярлалаа!

    1.    Драссилл гэж хэлэв

      Энэ нь танд ашигтай гэж үзсэнд би баяртай байна.

      Сайн байцгаана уу.

  2.   Michelangelo гэж хэлэв

    Apache болон хоёр сервертэй кластер хийх арга байдаг, энэ нь хэрхэн ажилладаг талаар тайлбарлаж өгөхгүй юу?

    1.    Драссилл гэж хэлэв

      Хэдийгээр би энэ талаар зарим онолыг уншсан ч практикт хэзээ ч хэрэгжүүлж байгаагүй. Гэсэн хэдий ч, энэ нийтлэл танд энэ талаар зарим зааврыг өгч магадгүй юм, гэхдээ би үүнийг практик дээр хэрэгжүүлэх боломж олдоогүй гэдгийг давтан хэлье.

      http://www.muspells.net/blog/2011/04/alta-disponibilidad-con-apache2-y-heartbeat-en-debian-squeeze/

    2.    Эдуардо Жалил гэж хэлэв

      Хэрэв та шийдээгүй бол та удаан хугацаанд гуйсан; Надад файлын системийн үүрэг гүйцэтгэдэг гуравдагч этгээдтэй тэнцвэржүүлэх схем байна, та var / www / html / (миний тохиолдолд) дотор байгаа фолдеруудыг файлын систем рүү чиглүүлээрэй, ингэснээр тэд ижил мэдээлэл хуваалцах болно. apache-ийн ips-т хариу өгч, дахин чиглүүлж өгөх виртуал ip-ийг шаарддаг, ингэснээр та гапроксийг эзэмших боломжтой бөгөөд хэрэв та үүнийг өндөр хүртээмжтэй байлгахыг хүсч байвал нэг нь унах, нөгөө нь үргэлжлүүлэн хариу өгөх, эсвэл хэрэв танд байгаа бол хадгалах кодыг нэгтгэх боломжтой. програмд ​​зориулсан домэйн, та фунт хоёр серверийн арын арын шилжилтийг хийж тэнцвэржүүлж болно, жишээ нь moodle эсвэл mysql доторх мэдээллийн баазтай холбогддог зарим програмууд гэх мэт тохиолдолд та нэг мэдээллийн сервер рүү нэг сервер рүү нэвтрэх хэрэглэгч үүсгэх хэрэгтэй болно. .

  3.   шамару гэж хэлэв

    Бичлэгийнхээ төлөө маш их баярлалаа, та туйлын зөв байна, хуц бол үндсэн тооцоо юм, гэхдээ бид бас процессороороо дамжуулж болох хамгийн их процессыг тооцдог гэж төсөөлж байна (мэдээжийн хэрэг, эхлээд үндсэн санах ойг тооцоолох хэрэгтэй) мөн дискийг хэрхэн хатуу хуваарилах талаар (Жишээ нь хуваалтууд / var = 1TR).

    1.    Драссилл гэж хэлэв

      Чиний зөв; температурын хяналт гэх мэт бүх зүйл чухал юм. Хүчирхэг процессор нь илүү олон тооны ажлыг нэгэн зэрэг өндөр үр ашигтайгаар гүйцэтгэж чадах нь дамжиггүй, гэхдээ энэ бичлэгийн зорилго нь RAM-ийн ач холбогдлыг нэгэн зэрэг холболтын тоог тайлбарлах явдал байв.

      Эдгээр бүх хүчин зүйлийг хянах, бидний процессор ханасан биш эсвэл үнэгүй RAM бага байгаа эсэхийг шалгах сайн арга бол bash скрипт ашиглах явдал юм. Магадгүй хэд хоногийн өмнө энэ талаар оруулсан энэ бичлэг танд сонирхолтой байж болох бөгөөд дараахь линкээр орууллаа. Энэ бол дэлхийн хяналт, гэхдээ хэн нэгэнд сонирхолтой байж болох юм.

      http://bytelearning.blogspot.com.es/2015/07/controlando-la-salud-del-equipo-con-bash.html

      Баярлалаа!

  4.   Сержио С. гэж хэлэв

    Маш сайн тэмдэглэл, маш их баярлалаа!

    1.    Драссилл гэж хэлэв

      Маш их баярлалаа! Та үүнийг ашиглаж чадсан гэж найдаж байна.

  5.   алиалагч гэж хэлэв

    Би новш байхыг хүсэхгүй байна ...
    … Гэхдээ холболтын тоог нэмэгдүүлснээр та DDoS халдлагад илүү өртөмтгий биш гэж үү?

    1.    Драссилл гэж хэлэв

      Энэ бол чимээгүй кретины асуулт биш юм. Үнэн бол нэгэн зэрэг холболтын тоог нэмэгдүүлэх замаар бид Apache-г DDOS халдлагын эсрэг хэсэгчлэн бэхжүүлдэг явдал юм, учир нь сервер дээр тогтоосон хамгийн дээд зэрэглэлийн холболтын тоо нь нийт холболтын тоо биш харин хамгийн дээд холболтын тоо юм. нэг хэрэглэгч. Тиймээс, эхэндээ бид зөвхөн 150 нэгэн зэрэг холболтыг (хууль ёсны эх сурвалжаас холбосон эсэхээс үл хамааран) дэмжиж чаддаг байсан бол одоо бид серверийнхээ дэмжлэгийг авах боломжтой бөгөөд үүнээс илүү олон холболтыг үлдээх шаардлагатай болно. үйлчилгээгүй. Мэдээжийн хэрэг хамгийн их холболтын тоог нэмэгдүүлэх нь энэ төрлийн халдлагаас хамгаалах арга биш харин галт хананы бодлогыг хэрэгжүүлэх ёстой. Жишээлбэл, таны оруулахыг хүссэн вэб үйлчилгээ интернетэд холбогдох гэж байгаа бол аюулгүй байдлын арга хэмжээ авах нь эдгээр галт хананд нэмж оруулах болно.

      iptables -A INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-up to 10 -m state –state NEW -j ХҮЛЭЭН АВАХ

      iptables -A INPUT -p tcp –dport 80 -m state –state ТОГТВОРТОЙ, ХОЛБООТОЙ -j ХҮЛЭЭН АВАХ

      iptables -A INPUT -p tcp –dport 80 -j DROP

      1.    алиалагч гэж хэлэв

        DDoS халдлагын нэг онцлог шинж чанар нь халдагч хэд хэдэн чиглэлээс пакет илгээж байгаа мэт харагддаг бөгөөд энэ нь пакетуудын урсгалыг зөвхөн нэг чиглэлээс ирэхээс сэргийлдэг.

    2.    Драссилл гэж хэлэв

      Миний бүтээсэн шиг галт хана нь янз бүрийн эх сурвалжаас ирдэг тул DDOS халдлагын эсрэг төдийлөн үр дүнтэй байдаггүй гэдэг утгаараа та зөв байна. Гэсэн хэдий ч эдгээр эх үүсвэр тус бүрт холболтын тоог хязгаарлалтгүй байснаас 10-оор хязгаарлах нь зүйтэй бөгөөд ингэснээр эх сурвалж бүр зуун ба түүнээс дээш холболт хийх боломжтой болно.

      Аль ч тохиолдолд асуултын багц нь сервер нэгэн зэрэг холболтыг дэмжих тусам DDOS халдлагад өртөхөд хэцүү байх бөгөөд ингэснээр хуудсыг халдагч унагаахад илүү төвөгтэй болох болно. .

      Сайн байцгаана уу.

  6.   eliotime3000 гэж хэлэв

    Сайн байна. Одоогийн байдлаар би өөрийн VPS-ийг тамлахгүйн тулд өөрийн сайт дээр NGINX-тэй үргэлжлүүлэн ажиллаж байна.

  7.   Бруно Касчио гэж хэлэв

    Сайхан бичлэг @ Drrassill!

    Би тохиргооноос илүү статистик зүйлээр хувь нэмрээ оруулахыг хүссэн.
    Хэдийгээр хэрэглээний параметрийг тооцоолох хамгийн хялбар бөгөөд хурдан арга бол дундаж утгатай боловч бид илүү хатуу байж, "дундаж" -ын оронд "медиан" -ыг ашиглаж болох юм. Биднийг юу аврах вэ? Холболт нь санах ойг их хэмжээгээр зарцуулсан тохиолдолд тоонууд гарч ирдэг. Жишээлбэл, дараахь утгыг хүссэн санах ойн нэгжид ашигладаг дараахь үйлчлүүлэгчдийг (KB, MB, MiB гэх мэт) бодъё.

    10, 15, 150, 5, 7, 10, 11, 12

    Дундаж нь ойролцоогоор ~ 30 байх болно

    Учир нь бид маш том туйлширдаг (150), мөн тооцоо нь галзуу юм. Медиан нь эдгээр өгөгдлийг захиалах, дээжийн тоог 2-т (манай төв) хувааж, дараа нь тухайн байрлалын тоог авахаас бүрдэнэ. Үүний тусламжтайгаар бид иймэрхүү зүйл авах болно

    5, 7, 10, 10, 11, 12, 15, 150

    Тэгэхээр бидний дундаж утга нь: 8/2 = 4 гэсэн 10 = XNUMX байх болно

    Хэт их галзуу байсан ч энэ нь бидэнд илүү бодит үнэ цэнийг өгөх болно гэдгийг эндээс харж болно. Хэрэв бид 200 хэрэглэдэг хэрэглэгчийг нэмбэл манай медиан 11 байх бөгөөд дундаж нь …… руу шилжиж магадгүй юм.

    Энэ бол зөвхөн хувь нэмэр бөгөөд энэ нь маш их маргаантай байдаг, учир нь холболттой холбогддоггүй.

    Хүмүүсийг тэврэх linuxera 🙂

  8.   Карлос гэж хэлэв

    Сайн байцгаана уу, би зориулагдсан сервер дээрээ асуудалтай тулгараад байгаа бөгөөд google analytics-ийн дагуу бодит цаг хугацаанд 250 орчим онлайн хандах тоолонд миний сервер унаж, холболт тасрах хүртэл холболт удаан болдог. вэбсайт руу оруулдаг бөгөөд хэзээ ч ийм тооны хэрэглэгчийг онлайнаар байршуулдаггүй боловч зориулалтын серверийн гүйцэтгэлийг харахад 8gb ram нь ашиглалтын 10%, cpu: ашиглалтын 5%, хатуу диск: 1.99% ашиглалтын.
    Та надад тусалж чадах уу? Би юу хийхээ мэдэхгүй байна, эдгээр алхамуудыг хийх нь шийдэл мөн үү?

    1.    Драссилл гэж хэлэв

      Сайн Карлос.

      Таны тайлбарласан асуудал нь серверийг зохих ёсоор бэлтгээгүй үед маш их тохиолддог. Таны сервер хавьгүй цөөн тооны нэгэн зэрэг холболтыг хүлээж авах бөгөөд 250 холболтод хүрэхэд гацах болно. Гарын авлагыг дагаж та асуудлыг шийдвэрлэх боломжтой байх ёстой, гэхдээ хэрэв танд тэр сервер дээр мэдээллийн сан байгаа бол тэр мэдээллийн санг оновчтой болгох хэрэгтэй.

      Сайн байцгаана уу.

      1.    Карлос гэж хэлэв

        Драссилл, би таны хэлсэн тохиргоог хийж гүйцэтгэсэн бөгөөд сэтгэл ханамжтай байна, өчигдөр би 280 хэрэглэгчид онлайнаар холбогдож, сервер нь залгагдсангүй, энэ үр дүнд би маш их баяртай байна, бас оновчтой болгоорой гэсэн өөр зүйлийг хийхийг хүсч байна. мэдээллийн сан, ¿Би үүнд хэрхэн хүрэх вэ?

    2.    Драссилл гэж хэлэв

      Мэдээллийн сангийн тухай ойлголт нэлээд нээлттэй; mysql ашиглах нь postgres-тэй адил биш (жишээлбэл). Мэдээжийн хэрэг би бүх мэдээллийн санг мэдэхгүй; Би mysql болон postgres-ийг туршиж үзсэн бөгөөд эдгээрийн нэгэн зэрэг холболтыг нэмэгдүүлэх нь хамгийн дээд холболтын параметр дээр суурилсан байх болно; mysql-ийн оновчлолыг /etc/my.conf дээр хийж, max холболтын параметрийг өөрчлөх шаардлагатай болно. Үүний оронд postgres-ийн хувьд би танд блогтоо хэрхэн ашигтай болгох, эсвэл мэдээллийн баазынхаа лавлагаа болгон ашиглаж болох талаар тайлбарласан нийтлэл байна.

      http://bytelearning.blogspot.com.es/2016/02/postgresql-una-alternativa-mysql-en.html

      Сайн байцгаана уу.

  9.   Эриксон васкес гэж хэлэв

    Сайн уу, би эхний командыг шидэхэд надад 0-ийн утга харагдаж байна. Энэ юу байж болох вэ?

  10.   Даниел Ожеда гэж хэлэв

    Энэ нийтлэлд баярлалаа.