Наръчник за начинаещи Python 95 - Функция за работа със списъци

Уеб приложението е хипотетично представено на Digg или Reddit и натоварването на сървъра незабавно се увеличава с няколко порядъка. Какъв вид хостинг решение ще позволи на уебсайта да оцелее при голям поток като този? (и не струва цяло състояние)

Хостингът през AWS изглежда е на мода в наши дни. Мнозина обаче се оплакват от разходите. Ще може ли VPS хостинг решението да се разшири своевременно, като същевременно струва по-малко? Алтернативи? Благодаря.

Оптимизирайте приложението си, преди да оптимизирате сървърната си инфраструктура
Изкушаващо е да хвърляте повече сървъри при скокове на трафика или да преплащате за ресурси, които може никога да не използвате „за всеки случай“. По-доброто решение е да оптимизирате приложението си, за да издържите на скокове, преди да пристигнат. По-конкретно:

Динамичен код на кеша
Вашето приложение трябва да обслужва статични html файлове, вместо динамично генерирани такива, използващи кешираща система. WordPress предлага плъгини за това (напр. W3 Total Cache), но не е твърде сложно да пуснете собствено решение, ако приложението ви е отгледано вкъщи. (Потърсете "статичен кеш [език за програмиране]".)

Разтоварване на статични активи
Подавайте изображения, CSS и JavaScript файлове от някъде другаде. Пакетите на Amazon Cloudfront и S3 са популярни опции, но аз предпочитам Cloudflare, който предлага автоматично кеширане на статични активи и списък с други предимства за спестяване на CPU и честотна лента за $ 20 / месец.

Използвайте инструмента на Google Page Speed ​​Online
Оптимизирайте сайта си допълнително с инструмента на Google Page Speed ​​Online. Той ще представи предложения за неща, които можете да направите, за да подобрите скоростта на страницата (и да намалите натоварването), без да докосвате сървърната си инфраструктура.

Когато сте направили всичко това
Само тогава си струва да разгледате оптимизацията на хардуера и околната среда. Някои варианти, които си струва да се обмислят:

  1. VPS решения, които осигуряват „незабавно мащабиране“, като VPS.net.
  2. Решения за хостинг на приложения като Duostack, PHP Fog и Orchestra.io, които оптимизират и балансират натоварването на инфраструктурата за вас.
  3. Оптимизирани среди като Nginx с PHP-FPM или Ruby Enterprise Edition.
  4. Ако просто хоствате блог, помислете за хоствана платформа като WordPress.com или tumblr. Те са склонни да издържат на нарастването на трафика по-добре от домашните настройки по подразбиране (и те са по-евтини).

Ако всичко се провали ...
Помислете за създаването на статична страница, за да очертаете вашата услуга и да съберете имейл адреси. Поставете това на мястото на самото приложение, ако вашият сайт падне по време на скок на трафика. За това използвам Wufoo или MailChimp.

Ако сте домакин на спешна помощ имаме глупак! ' формуляр на отделен (евтин) споделен хостинг акаунт, можете да използвате DNS файлоувър за автоматично пренасочване на трафика към статичния формуляр, ако основното ви приложение попадне. По този начин, ако Digg ви изпрати 100 000 посетители и приложението ви се задуши, поне ще сте изградили своя пощенски списък и сте предизвикали интерес за част от тези посетители.

  • Силно се интересувам от решения за автоматично мащабиране като AWS, при които може да се присвои автоматично повече обработваща мощност на вашето приложение, ако има проблем с претоварване. Също така, понякога динамичният HTML е необходимост и кеширането не е жизнеспособно решение, не мисля.

Това наистина зависи в голяма степен от това как вашите интерфейсни сървъри разпределят натоварването. Ако не е проектиран да има добавен допълнителен капацитет към него при натискане на превключвателя (или може би още по-добре, автоматично, когато се открие устойчив скок), тогава планирането на този вид неща е трудно.

Ако проектирате балансирането на натоварването си по такъв начин, че да можете да превключвате допълнителни сървъри за броени минути (например чрез AWS), тогава ще платите допълнителния капацитет само докато го използвате. Ще трябва да направите проучване на ценообразуването с някакъв сценарий, за да видите дали ценообразуването ще се получи.

ВЪПРЕКИ ТОВА ако имате внезапен скок на трафика поради популярността, има по-лоши неща в света, отколкото слизането за кратък период, освен ако не използвате системи за поддържане на живота или нещо подобно.

Ако вашето приложение / стартиране / проект е особено чувствително към разходите, бих препоръчал да изградите това, от което се нуждаете, и да го запазите при това. Ако избухне по популярност и трябва да отделите няколко дни за добавяне на капацитет, бихте нарекли това добър проблем.

Освен това, планирането твърде далеч за капацитет, който все още не ви е необходим, ще ви накара да похарчите пари сега, които бихте могли да похарчите за по-важни ресурси.

Като само един пример, първият сайт на StackExchange (StackOverflow) работи на един сървър до може би миналата година, вярвам. Джеф Атууд говори за това в своя блог и те получаваха милиони показвания на страници на ден, преди да добавят допълнителна инфраструктура за мащабиране на мрежата StackExchange.

  • Чудя се как stackoverflow успя да поддържа сайта си на един сървър толкова дълго (връзка към статия?).

По време на периода на голям трафик вашият сървър трябва да може да обработва всички заявки, направени от посетителите на вашия уебсайт. Но има някои ограничения в едновременните връзки, обработвани от сървъра. Така че най-добре е да обслужвате заявките за страници възможно най-бързо.

Ето няколко предложения, които трябва да имате предвид в тези ситуации,

Подобрения на ниво приложение:

  1. Намалете HTTP заявките, за да ускорите времето за зареждане на страниците.

а) Комбинирайте всички JS файлове заедно в един комбиниран JS файл и всички CSS файлове в един комбиниран CSS файл.

б) Намалете JS и CSS файловете, така че размерът на файла ще бъде намален и ще бъде изтеглен по-бързо.

в) Използвайте CSS спрайтове - Когато комбинирате повечето или всичките си изображения в спрайт, превръщате множество заявки за изображения в само едно. След това просто използвате свойството CSS за фоново изображение, за да покажете частта от изображението, от която се нуждаете.

г) Отложете изтеглянето на изображението с мързеливо зареждане, това ще бъде полезно за намаляване на http заявките.

  1. Подгответе леки страници, които очакват повече посещения:

а) Изключете декоративни елементи като изображения или Flash, където е възможно; използвайте текст вместо изображения в навигацията на сайта и chrome и поставете по-голямата част от съдържанието в HTML.

б) Използвайте статични HTML страници, а не динамични; последните натоварват повече сървърите ви. Можете също да кеширате статичния изход на динамични страници, за да намалите натоварването на сървъра.

Подобрения на ниво сървър:

  1. Намалете стойностите на времето за изчакване на сървъра, като се консултирате с вашия доставчик на хостинг услуги (не трябва да е твърде ниско).

Когато времето за изчакване е по-малко, връзката ще бъде освободена скоро, така че сървърът ще може да обработва повече връзки.

  1. Използвайте услуги на трети страни като CloudFlare за кеширане на статични данни и за да защитите уебсайта си от злонамерени потребители и атаки като DDOS.

  2. Надстройте сървърния си хардуер - Надстройте физическата и виртуалната памет, увеличете ограниченията за I / O и Entry процеси, ако е необходимо. Вашият хостинг доставчик ще може да ви помогне по-добре.

  3. Кеширане на динамичен код - Използвайте APC, за да кеширате PHP кода за работа.

  4. Балансиране на натоварването - Разпределете натоварването между множество сървъри за балансиране на натоварването.

    Когато бъдат предприети всички необходими действия, сега е време да проверите дали уебсайтът е готов за огромен скок на трафика.

    Има някои услуги на трети страни като loadimpact.com, които осигуряват тестване на натоварване със симулиран трафик. Анализът ще ви помогне да разберете с колко натоварване може да се справи вашият уебсайт и какво може да се подобри.

    Също така, по време на периода на скок на трафика, избягвайте операции с висока употреба на процесора, като например архивиране на уеб сайтове и т.н.

  • Моля, не използвайте този сайт, за да популяризирате своя

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?