Сдал экзамен, по symantec. не уверен, что будет уместно что-либо про него писать, т.к. перед сдачей поставил галочку, о том, что не разглашу ничего из списка в 20 страниц текста =)
Теперь я теоретик бэкапов! Нужно начинать задумываться о необходимости их делать =)
Для сдачи потребовалось — прочитать 4 книжки на английском, где-то суммарно 1000 страниц. Развернуть и пощупать базовый функционал. ~60 часов времени.
Удалось набрать 94% из 100%. где-то 4 ошибки похоже было.
В интернетах бытует мнение, что хранить файлы в БД — школоло. Разрушаем стереотип с Mongo GridFS.
Введение:
MongoDB предоставляет возможность хранить файлы любого размера в Mongo GridFS
Для драйвера PHP — это обычная коллекция, в которой есть поле для хранения бинарных данных.
Бинарные данные в свою очередь разбиваются на чунки(небольшие куски).
Бинарные данные можно извлечь как целиком, так и почунково(это экономит память).
Плюсы хранения данных в БД MongoDB:
MongoDB может хранить миллионы файлов в БД, хранение такого объёма данных в файловой системе может вызвать проблемы(начиная с IO проблем, заканчивая проблемами доступа к данным из разных серверов).
MongoDB реплицирует данные на все сервера, что упрощает доступ к данным на отдельно взятом сервере.
Нет проблем с бекапами и целостностью данных на разных серверах. надёжность обеспечивается MongoDB.
К загруженному файлу можно прикрепить метаданные (описание, комментарии, лайки, и.т.д.)
Т.к. файлы хранятся в чунках — можно работать с любой частью файла.
Минусы:
Быстродействие ниже, чем nginx + файловая истема. Сравним:
nginx + файловая система, получаем 6559.31 операций в секунду
apache + файловая система: получаем 2625.37 операций в секунду
nginx + модуль nginx-gridfs, получаем 1083.88 операций в секунду
Вывод: nginx + fs на высоте, но это решение не даёт масштабируемости и гибкости.
nginx + nginx-gridfs даёт приличные результаты, которые существенно возрастут, при использовании нескольких серверов MongoDB.
Благодарность, http://tokarchuk.ru за тесты.
Плагин брать здесь
Для тестирования нагнём блог апачевской тулзой «ab»:
С плагином: 1000 запросов в 10 потоков.
Без плагина: 100 запросов в 2 потока.
Результаты:
С плагином: 220.16 запросов в секунду
Без плагина: 1.07 запроса в секунду
Логи под катом
Мой проект. win2win.
Вам: удобный движок для управления рекламой всех своих сайтов из одного места. с суппортом и помощью.
Мне: Формирую детальный каталог по рекламодателям и предлагаю регистрацию по реф ссылкам.
Описание:
плюсы:
минусы:
Причина создания: устал возиться с openx. Сложно, избыточно, медленно.
Версия стабильна, имеется инсталлятор, приглашаю начать использовать в бетта режиме http://iako.ru
Тестируем WordPress сайт утилитой ab:
ab -c 20 -n 200 http://lenta.iadlab.ru/ |
Что эквивалентно 20 запросам в секунду. Общее число запросов 200. Перед Apache стоит nginx, который принимает запросы и проксирует на apache в очередь.
Принцип работы XCache: предварительно компилируем PHP файлы в объектный код и сохраняем в памяти. При выполнении запроса линкуем нужные файлы из памяти и выполняем запрос.
Результаты без XCache:
Concurrency Level: 20 Time taken for tests: 51.226 seconds Complete requests: 200 Failed requests: 0 Write errors: 0 Total transferred: 10737600 bytes HTML transferred: 10688600 bytes Requests per second: 3.90 [#/sec] (mean) Time per request: 5122.616 [ms] (mean) Time per request: 256.131 [ms] (mean, across all concurrent requests) Transfer rate: 204.70 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 473 4935 1205.1 4900 10384 Waiting: 272 4544 1024.4 4588 9127 Total: 473 4935 1205.1 4900 10384 |
Результаты с XCache:
Concurrency Level: 20 Time taken for tests: 35.107 seconds Complete requests: 200 Failed requests: 0 Write errors: 0 Total transferred: 10737600 bytes HTML transferred: 10688600 bytes Requests per second: 5.70 [#/sec] (mean) Time per request: 3510.692 [ms] (mean) Time per request: 175.535 [ms] (mean, across all concurrent requests) Transfer rate: 298.69 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.6 0 3 Processing: 418 3366 791.7 3310 6196 Waiting: 324 3015 625.8 3056 4991 Total: 421 3366 791.4 3310 6196 |
Вывод: время выполнения упало ~ вдвое.
первый раз осилил многобукаф в названии поста, собственно продолжим.
если вы линупсоид,выполните
ab -c 100 -n 10000 http://мой_сайт.ru/ |
Эта команда выполнит лёгенький ддос на ваш сайт(10000 запросов суммарно по 100 запросов параллельно) =)
что интересного можно узнать из результата:
Ну вот, кроме всяких скоростей есть поле failed requests. Это количество ошибок. Если их нет, то хорошо.
Естественно такие данные как ниже вас должны ввергать в неконтроллируемый страх и ужос, как и повёл себя товарищ пилящий =)