трънки и блогинки

Слави Николов за скалируемостта на vbox7 – записки

Написано на: 02.11.2008 · Един коментар

Vbox7 днес е с над 631 хиляди заявки на ден, като сервират 9-10 гигабита в секунда. Всички сме гледали видео от там и на мен ми харесва как са го направили. На OpenFest Слави Николов разказва биографията на сайта.

В началото не са го мислили за мащаб. Писали са го да работи – по простичкия начин – без frameworks и темплейт системи. Искали са да ползват utf8 и MySQL myISAM. Пипали са по работещи системи, както правят всички безсмъртни мъже. После ги е ударил трафика и е трябвало да почнат да осъзнават какво са направили. Ползвали са нормално препоръчваните средства за анализ и първо са решили да купят повече хардуер.

Анализират къде им отиват системните ресурси. Оперативна памет им харчат MySQL, статични файлове, динамична обработка на изображения и излишно големи заявки към базата. Дисково място отива за логове, файловете и бекъп. Процесорът се товари от MySQL и разни конвертори. Хардуерното обновяване е проблем заради лошата наличност на хардуерните ни доставчици. Дисковете обичат да се чупят и са основният източник на проблеми. Дейтацентровете в България също имат редица проблеми.

Интернет потреблението има цикличност. Сезонност – от септември до юли хората гледат повече. По време на деня – в работно време и от 20:00 до 23:30 от вкъщи са пиковете. Добавили са възможност да се изключва допълнителна функционалност при натоварване. Който умее да прави промени по I/O scheduler-a.

Още хардуер помага, но до време. Трябва и опитимизация на приложението. По-лесните неща са ползване на memcached, eaccelerator и отказ от frameworks и template engines. MySQL явно ги е тормозил много, защото са почнали от него да оптимизират. И те са зарязали apache и са се насочили към lighttpd и nginx. Спира се keepalive, cookies отиват на отделен дял, регулира се броят процеси и максималната памет. Още пипане по базата – text/blob в отделна таблица, за да може да се оптимизира.

После простите неща вече не работят и продължават да оптимизират. За web се ползва haproxy и memcahed, за MySQL – sharding и replication trees, от php оплаквания нямат. Търсенето е голям проблем, решават го с sphinx, което е отделен процес със свой индекс. Трафикът също е проблем, освен кеширащите проксита като squid и varnish, се bond-ват доставчици с определен сървър, или се слагат проксита при доставчиците.

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

Категория: всякакви

Един коментар ↓

  • Хубаво ми е, когато хората коментират. Чета внимателно всеки коментар и отговарям, когато имам какво да кажа.

  • Апостол Апостолов на 03.11.2008г. в 07:59ч.

    Тази информация е много ценна и за Интернет бизнеса. Аз лично с огромен интерес се запознах с нея. Целите ми, разбира се, бяха изцяло користни.