Writing /home/user/smartcj.com/wiki/data/cache/c/cb4f68b7c5486fae5ce81c790071ac88.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/user/smartcj.com/wiki/data/cache/c/cb4f68b7c5486fae5ce81c790071ac88.metadata failed
ru:faq
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ru:faq [2024/10/24 12:41] – [Mysql Backup] admin | ru:faq [2026/06/22 17:23] (current) – [How to test script] admin | ||
|---|---|---|---|
| Line 35: | Line 35: | ||
| те tube_embed_switch_rules выключен только для первого клика. | те tube_embed_switch_rules выключен только для первого клика. | ||
| - | ===== Приоритет скиминга | + | ===== Skim Priority by Entity |
| - | Ским указанный в урле имеет приоритет над всеми остальными вариантами. | + | По умолчанию |
| Если ским в урле не указан - проверяются персональные сетинги трейдеров. | Если ским в урле не указан - проверяются персональные сетинги трейдеров. | ||
| Если и тут ским не указан - используется дефолтный ским из сетингов.(CJSettings - Content Settings - Default skimming) | Если и тут ским не указан - используется дефолтный ским из сетингов.(CJSettings - Content Settings - Default skimming) | ||
| - | Но при желании это поведение можно менять, | + | При желании это поведение можно менять, |
| + | Можно таскать параметры вверх вниз, меняя | ||
| Line 282: | Line 283: | ||
| * rewrites - если у вас Apache то htaccess, если nginx то в его конфиге | * rewrites - если у вас Apache то htaccess, если nginx то в его конфиге | ||
| - | |||
| - | ===== " | ||
| - | |||
| - | Иногда возникает необходимость в реализации или тестировании какой-то функциональности, | ||
| - | |||
| - | * out.php переименовываем в out_scj.php | ||
| - | * out.php делаем такой | ||
| - | < | ||
| - | <?php | ||
| - | |||
| - | if ($_GET[' | ||
| - | $tmp = parse_url($_GET[' | ||
| - | if ($tmp[' | ||
| - | } | ||
| - | |||
| - | include(' | ||
| - | </ | ||
| Line 375: | Line 359: | ||
| ===== Сколько сайтов потянет сервер такой-то ... ? ===== | ===== Сколько сайтов потянет сервер такой-то ... ? ===== | ||
| - | Вопрос из разряда " | + | Вопрос из разряда " |
| + | |||
| + | Например, | ||
| + | |||
| + | 10М галер в базе с 3 вида сортировки , 500 категорий, | ||
| + | |||
| + | Оставить поиск на mysql - одна нагрузка, | ||
| ===== Mysql Backup ===== | ===== Mysql Backup ===== | ||
| Line 681: | Line 671: | ||
| В общей стат и стат каждого трейдера есть список урлов на которые приходит траф. | В общей стат и стат каждого трейдера есть список урлов на которые приходит траф. | ||
| + | |||
| + | ====== Outlist and Priority ====== | ||
| + | |||
| + | В этом в целом заключается вся раздача трафика. | ||
| + | |||
| + | Трейдеры получают приоритет по расчету Trade Formula. А так же по форсам (например 1 fast force прибавляет 10000 к приоритету что бы трейдер оказался выше по приоритету). | ||
| + | |||
| + | Крон раз в минуту расставляет трейдеров по приоритету в список outlist (settings - out settings). | ||
| + | При каждом клике на аут мы пошлем на трейдера с соответствии с вероятностью в outlist. | ||
| + | |||
| + | Выводы которые надо понять: | ||
| + | |||
| + | 1. если трейдер на первой позиции outlist (и по приоритету) - не факт что он получит первый же клик | ||
| + | 2. если у вас в outlist 10 позиций, | ||
| + | 3. если вы поставили форсов больше чем позиций в листе, то они буду отданы по очереди, | ||
| + | |||
| + | |||
| ====== Page Track ====== | ====== Page Track ====== | ||
| Line 702: | Line 709: | ||
| + | ====== How to count with JS ====== | ||
| + | |||
| + | Для обратной совместимости, | ||
| + | |||
| + | Если вы хотите считать только ины то можно поставить JS счетчик следующим кодом: | ||
| + | |||
| + | < | ||
| + | <script | ||
| + | src=" | ||
| + | data-endpoint=" | ||
| + | ></ | ||
| + | </ | ||
| + | ====== Server Load ====== | ||
| + | |||
| + | Что можно отключить что б снизить нагрузку на сервер? | ||
| + | Все что вы можете отключить в админке - так же можно снова включить, | ||
| + | |||
| + | В большинстве случае не сложно догадаться, | ||
| + | |||
| + | Если есть желание смотреть дальше чем " | ||
| + | |||
| + | Нагрузку на сервер можно сравнить с ситуацией когда по одной трубе вода затекает в бассейн, | ||
| + | |||
| + | Что такое переполнение бассейна, | ||
| + | |||
| + | На серваке работает apache (вебсервер), | ||
| + | 50% памяти - кеш статики | ||
| + | 20% - апач | ||
| + | 30% - mysql | ||
| + | |||
| + | Например, | ||
| + | |||
| + | Если давать 110 то запросы будут становиться в очередь, | ||
| + | |||
| + | Это увеличивает скорость роста очереди, | ||
| + | |||
| + | Поэтому " | ||
| + | |||
| + | Иногда админ настраивает сервер немного сложнее и сервер может пропускать запросы, | ||
| + | |||
| + | |||
| + | Базово скрипт состоит из 2х частей | ||
| + | - вебчасть, | ||
| + | - то что выполняется по crontab (раз в минуту или реже) | ||
| + | |||
| + | |||
| + | **Начнем с веб части.** | ||
| + | |||
| + | Надо взять ваш любимый вариант просмотра нагрузки сервака и проверить что в основном нагружает сервер. | ||
| + | В целом есть 3 части: проц, память и диск. Есть еще пропускная способность канала, | ||
| + | |||
| + | 1. Процессор: | ||
| + | |||
| + | Кратко: | ||
| + | |||
| + | После шага 1 темплейт кешится [[new_rotation_faq# | ||
| + | |||
| + | Но часто в темплейтах есть инклуды своего пхп кода. Надо помнить что этот код выполняется на каждый запрос каждой страницы и при его | ||
| + | |||
| + | mysql: если в топе mysql, то вероятно не оптимизирован какой-то из запросов. Из того что есть тияжелое в скрипте: | ||
| + | |||
| + | Либо поиск: mysql ищет намного медленее чем sphinx (надо переходить на mysql fulltext or sphinx) | ||
| + | |||
| + | |||
| + | В целом надо зайти в mysql и проверить какие запросы висят в топе, может быть там есть rand() или like % - тогда это случаи выше. Если этого нет, то обращайтесь - будем смотреть плотнее, | ||
| + | |||
| + | |||
| + | 2. Память и Диск - связаны, | ||
| + | |||
| + | В среднем mysql пытается загрузить в память как можно больше базы, что бы не обращаться к диску за данными и, если хватает памяти, | ||
| + | |||
| + | Тут наступает вопрос приоритета: | ||
| + | |||
| + | Если траф приходит только на главную страницу, | ||
| + | |||
| + | Например, | ||
| + | |||
| + | Понятно что эти параметры не переключаются из скрипта. Тут как обычно есть 2 варианта: | ||
| + | |||
| + | |||
| + | **2. crontab** | ||
| + | |||
| + | По крону (те периодически) скрипт делает несколько действий: | ||
| + | * cron.php - пересчитывает статистику трейдеров (кому сколько должен, | ||
| + | * rotation.php - апдейтит статистику тумб в базе | ||
| + | * gallery_grabber & gallery_checker - грубит тумбы и проверяет что галеры доступны. | ||
| + | |||
| + | |||
| + | Можно ли их запускать не каждую минуту - можно хоть раз в день, но логично что если вы запустите rotation.php раз в день то весь день тумбы будут в том же положении на странице. cron.php - приоритеты трейдеров поменяются 1 раз и тп. | ||
| + | |||
| + | |||
| + | Из всего этого следует вопрос: | ||
| + | |||
| + | |||
| + | ====== How cache works ====== | ||
| + | |||
| + | Как работает кеширование в интернет | ||
| + | |||
| + | < | ||
| + | |||
| + | +------------------+ | ||
| + | | Пользователь | ||
| + | +------------------+ | ||
| + | | | ||
| + | v | ||
| + | +------------------+ | ||
| + | | | ||
| + | +------------------+ | ||
| + | | | ||
| + | | ||
| + | v | ||
| + | +----------------------------------+ | ||
| + | | Кэш браузера | ||
| + | +----------------------------------+ ни скрипт никогда не узнают что | ||
| + | | ||
| + | v | ||
| + | +----------------------------------+ | ||
| + | | CDN | Аналогично и тут, запрос еще не дошел до сервера | ||
| + | +----------------------------------+ | ||
| + | | | ||
| + | | ||
| + | v | ||
| + | +----------------------------------+ | ||
| + | | | ||
| + | | | ||
| + | +----------------------------------+ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | | ||
| + | | ||
| + | v | ||
| + | +----------------------------------+ | ||
| + | | | ||
| + | +----------------------------------+ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | | ||
| + | v | ||
| + | +------------------+ | ||
| + | | | ||
| + | +------------------+ | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | **Как браузер получает страницу и где в интернете появляется кэш** | ||
| + | |||
| + | Когда пользователь вводит адрес сайта в браузере, | ||
| + | На самом деле браузер старается не ходить на сервер, | ||
| + | |||
| + | Вся система интернета устроена так, чтобы: | ||
| + | |||
| + | * получить ответ как можно быстрее | ||
| + | * пройти как можно меньшее расстояние | ||
| + | * задействовать как можно меньше серверов | ||
| + | |||
| + | Для этого используются кэши. | ||
| + | |||
| + | |||
| + | **Шаг 1. Браузер и кэш браузера** | ||
| + | |||
| + | После ввода адреса браузер сначала проверяет: | ||
| + | |||
| + | Браузер может хранить: | ||
| + | |||
| + | * готовую HTML-страницу | ||
| + | * стили | ||
| + | * JS скрипты | ||
| + | * изображения | ||
| + | |||
| + | Если нужные данные уже есть в кэше браузера: | ||
| + | |||
| + | * никакого запроса в интернет не происходит | ||
| + | * сервер вообще ничего не узнаёт о пользователе | ||
| + | * страница открывается мгновенно | ||
| + | |||
| + | Это самый быстрый вариант. | ||
| + | |||
| + | **Шаг 2. DNS — поиск адреса сервера** | ||
| + | |||
| + | Если браузеру всё-таки нужно идти в интернет, | ||
| + | |||
| + | «Куда идти?» | ||
| + | |||
| + | Для этого используется DNS. DNS переводит имя сайта в IP-адрес | ||
| + | |||
| + | **Шаг 3. CDN — сервер ближе к пользователю** | ||
| + | |||
| + | После DNS запрос идёт не обязательно сразу на основной сервер сайта. | ||
| + | |||
| + | Между браузером и сервером может находиться CDN — сеть серверов в разных странах. | ||
| + | |||
| + | Пример: | ||
| + | |||
| + | Если всегда обращаться в Европу: | ||
| + | |||
| + | * сигналу нужно пройти большое расстояние | ||
| + | * страница будет загружаться медленно | ||
| + | |||
| + | CDN работает так: | ||
| + | |||
| + | * первый запрос идёт на основной сервер | ||
| + | * ответ сохраняется на сервере CDN ближе к пользователю | ||
| + | * следующие пользователи получают страницу быстрее | ||
| + | |||
| + | CDN удобно использовать для контента, | ||
| + | |||
| + | * если CDN отдаёт ответ из кэша, запрос не доходит до основного сервера | ||
| + | * скрипт ничего не узнаёт о пользователе | ||
| + | |||
| + | **Шаг 4. Веб-сервер (Apache / Nginx)** | ||
| + | |||
| + | Если CDN не смог отдать страницу, | ||
| + | |||
| + | У веб-сервера есть выбор: | ||
| + | |||
| + | * отдать готовую страницу (если он откуда то знает что надо отдать) | ||
| + | * передать запрос дальше в скрипт | ||
| + | |||
| + | Если у веб-сервера есть готовый ответ: | ||
| + | |||
| + | * он сразу возвращает страницу | ||
| + | * скрипт не запускается | ||
| + | * скрипт не знает, что был запрос | ||
| + | * Apache может передать запрос скрипту 1 раз и закешировать ответ | ||
| + | |||
| + | Важный момент: | ||
| + | |||
| + | Это: | ||
| + | |||
| + | * отдельное хранилище | ||
| + | * файлы, память или Redis | ||
| + | * грубо это как отдельная коробка в которую могут складывать данные кто угодно кто работает на сервере | ||
| + | |||
| + | |||
| + | Еще раз для понимания. В серверный кеш могут писать: | ||
| + | |||
| + | * веб-сервер | ||
| + | * скрипт | ||
| + | * оба одновременно | ||
| + | |||
| + | |||
| + | Шаг 5. Скрипт (приложение) | ||
| + | |||
| + | Если запрос дошёл до скрипта: | ||
| + | |||
| + | * скрипт точно знает, что был пользователь | ||
| + | * может записать статистику | ||
| + | * может принять решения сформировать страницу снова или отдать из кеша | ||
| + | |||
| + | |||
| + | **Скрипт формирует страницу из данных.** | ||
| + | |||
| + | Важно: кэшироваться может не только вся страница, | ||
| + | |||
| + | **Пример: | ||
| + | |||
| + | * название сайта хранится в базе и почти не меняется | ||
| + | * текущая дата должна быть новой каждый раз | ||
| + | |||
| + | |||
| + | Тогда: название сайта можно взять из базы 1 раз и сохранить в кеше, а дата формируется заново каждый раз | ||
| + | |||
| + | Те закеширована не вся страница, | ||
| + | |||
| + | **Шаг 6. База данных** | ||
| + | |||
| + | Если данных нет ни в каком кэше: | ||
| + | |||
| + | * скрипт обращается к базе | ||
| + | * база читает данные (тут варианты - если хватает памяти Mysql держит данные в памяти, | ||
| + | * страница полностью формируется заново | ||
| + | |||
| + | |||
| + | |||
| + | **Что из этого всего надо понять** | ||
| + | |||
| + | * если запрос не дошел до скрипта - скрипт про него просто не узнает | ||
| + | * page cache, Redis, memcache, серверный кеш и еще куча слов - это не важно, это просто название " | ||
| + | |||
| + | |||
| + | **Как используется память под кеш** | ||
| + | * базово данные хранятся в файлах | ||
| + | * база данных (mysql) может данные держать в памяти если хватает памяти и достаточно выделено в конфиге mysql | ||
| + | * redis (и любой другой кеш) так же как и база стараются хранить данные в памяти но если не хватает - скидывает в файл | ||
ru/faq.1729773708.txt.gz · Last modified: by admin
