Ris

Ris

+657
Репутация
3771
Рейтинг
#1 nginx + php-fpm for InstantCMS v2.x 24 июля 2019 в 20:15

например так не будут закачиваться файлы на сервер т.к. нет самого post запроса

@fazer
Дать ссылку на тестовый сервер?

что было бы правильнее ваш энтузиазм проявить

@fazer
В приподнятии вашего ЧСВ.
#2 nginx + php-fpm for InstantCMS v2.x 24 июля 2019 в 19:44

а вроде от чистого сердца...

@fazer
Когда человек начинает просить какие-либо преференции за свои благие дела, возникают сомнения в его чистосердечности.
По поводу конфигурации nginx могу добавить, что уже несколько лет просто добавляю одну строку
try_files $uri $uri/ /index.php?$args;
в /home/myuser/conf/web/mysite.ru.nginx.conf и больше не думаю об этом.
И всё работает и никаких проблем не было.
#3 nginx + php-fpm for InstantCMS v2.x 24 июля 2019 в 19:11

Ну что я могу сказать… успешно засрали тему,

@fazer
Это форум вообще-то. Место для обсуждения.

вы б с таким рвением карму мне поднакидали бы, как флудите

@fazer
Что-то у меня пропало желание…
#4 Уведомление об окончании публикации шлёт постоянно письма 24 июля 2019 в 18:12
Vladimir,
Да пустите Вы уже кого-нибудь понимающего к себе на сервер.
Ну не бывает таких чудес, чтобы прямо всё отключено, но всё равно письма рассылает…
#5 nginx + php-fpm for InstantCMS v2.x 24 июля 2019 в 18:04
@iKrym,
/blogs/zapiski-dinozavra/lokalnyi-testovyi-linuks-server-pod-windows.html
#6 [ЕСТЬ РЕШЕНИЕ] Работа с огромной базой более 100 млн. строк 24 июля 2019 в 09:45

у меня выборка из 10м занимает не более 1с

mr.KEVASC
Это с удаленного сервера? Тогда у вас на обоих серверах канал не менее 10Гб/с.
Шикарно живете!
#7 [ЕСТЬ РЕШЕНИЕ] Работа с огромной базой более 100 млн. строк 24 июля 2019 в 02:20

Необходимо сделать join по таблице которая стоит в основной и удаленной базе.

mr.KEVASC
Таблица, которая подключена к другой таблице — это практически одна таблица, только разнесенная по разным серверам. Джойнить её саму к себе не нужно. Можно точно так же подключить все таблицы в базе, тогда можно будет джойнить что угодно к чему угодно.

Необходимо понимание скоростей перебора больших массивов.

mr.KEVASC
Тут на родном-то сервере выборка из миллиона строк периодически захлебывается на лимит оффсете, а Вы хотите по сетке таскать сто миллионов...

Завтра поэкспериментирую. Сделаю полностью сайт, где все таблицы будут подключены к удаленному тестовому серверу. Посмотрю, как выборка миллиона комментариев будет выглядеть...
-----------------------------------------------------------------
Простой SELECT * FROM `comments` занял 31 секунду.
Отображение строк 0 — 49 (1075562 всего, Запрос занял 31,0000 сек.)
Какая к чертям скорость?
#8 [ЕСТЬ РЕШЕНИЕ] Работа с огромной базой более 100 млн. строк 24 июля 2019 в 00:55
mr.KEVASC,
Ответ MySQL: Документация

#1286 — Unknown storage engine 'FEDERATED'
----------------------------------------------------------------
Хотя… добавил federated в my.ini — работает.
Подцепился к удаленной базе. Селект работает нормально.
----------------------------------------------------------------
Инсерт тоже нормально работает. Добавил юзера в cms_users на локальном сервере и вошел под этим юзером на удаленном сайте.
И апдейт тоже нормально работает. Менял новому юзеру группы и никнейм.

работает ли на таком выборка, точно знаю что select и update работает норм

mr.KEVASC
Чем отличается выборка от селекта?
#9 [ЕСТЬ РЕШЕНИЕ] Работа с огромной базой более 100 млн. строк 24 июля 2019 в 00:31

Что за глупости? ))) Это где такое нашли? )

mr.KEVASC
Напишите умность.
Например код php, который сделает селект из двух баз на разных серверах.
#10 [ЕСТЬ РЕШЕНИЕ] Работа с огромной базой более 100 млн. строк 23 июля 2019 в 21:57
mr.KEVASC,
Идей сколько угодно. Нет понимания задачи.
Вы в курсе, что одновременный запрос в две базы данных возможен только в случае, если обе базы на одном сервере и у них один пользователь?
Поэтому "связывать" базы возможно только при помощи php. И это будет очень небыстро.
#11 Что лучше MariaDB или MySQL ? 23 июля 2019 в 14:49

Полагаю, на первой странице проблем нет.

Fuze
Да, первые 10000 страниц открываются почти мгновенно.

Вот с этим костылём
  1. // Получаем количество и список записей
  2. $total = !empty($this->count) ? $this->count : $this->model->getCommentsCount();
  3. if (strpos($_SERVER['REQUEST_URI'], 'comments/all') && $this->cms_user->id) {$this->model->limit($perpage)->join .= ("JOIN (SELECT id FROM cms_comments WHERE is_deleted IS NULL ORDER BY id DESC LIMIT ".($page - 1)*$perpage.", $perpage) c ON c.id = i.id ");}
  4. if (!$this->cms_user->id){$this->model->limit($perpage)->join .= ("JOIN (SELECT id FROM cms_comments WHERE is_private = '0' AND is_deleted IS NULL AND is_approved = '1' ORDER BY id DESC LIMIT ".($page - 1)*$perpage.", $perpage) c ON c.id = i.id ");}
  5. $items = $this->model->getComments();
на mariadb10.3 раньше всё работало. Выборка полторы секунды.
Хотя… изменил индекс в cms_comments_rating
  1. ALTER TABLE `cms_comments_rating` DROP INDEX `comment_id`, ADD INDEX `comment_id` (`user_id`, `comment_id`) USING BTREE;
Стало чуть побыстрее.
  1. /system/controllers/comments/model.php => 297 => modelComments->getComments()
  2. SELECT i.*, r.score AS `is_rated`, u.nickname AS `user_nickname`, u.is_deleted AS `user_is_deleted`, u.avatar AS `user_avatar`, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) AS `is_online`
  3. FROM cms_comments i
  4. JOIN (SELECT id FROM cms_comments WHERE is_deleted IS NULL ORDER BY id DESC LIMIT 1048480, 20) c ON c.id = i.id LEFT JOIN cms_users AS u ON u.id = i.user_id
  5. LEFT JOIN cms_sessions_online AS online ON online.user_id = u.id
  6. LEFT JOIN cms_comments_rating AS r ON r.comment_id = i.id AND r.user_id='86'
  7. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  8. ORDER BY i.date_pub DESC
  9. LIMIT 20
  10. Время выполнения 1.91492 секунд
По крайней мере сайт не ложится. laugh
#12 Что лучше MariaDB или MySQL ? 23 июля 2019 в 14:21

Такого запроса не в стоке.

Fuze
Если вернуть стоковый файл comments/frontend.php, то стоковый запрос ничуть не быстрее.
  1. /system/controllers/comments/model.php => 297 => modelComments->getComments()
  2. SELECT i.*, r.score AS `is_rated`, u.nickname AS `user_nickname`, u.is_deleted AS `user_is_deleted`, u.avatar AS `user_avatar`, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) AS `is_online`
  3. FROM cms_comments i
  4. LEFT JOIN cms_users AS u ON u.id = i.user_id
  5. LEFT JOIN cms_sessions_online AS online ON online.user_id = u.id
  6. LEFT JOIN cms_comments_rating AS r ON r.comment_id = i.id AND r.user_id='86'
  7. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  8. ORDER BY i.date_pub DESC
  9. LIMIT 1048500, 20
  10. Время выполнения 53.05825 секунд
#13 Что лучше MariaDB или MySQL ? 23 июля 2019 в 13:08

InstantCMS работает одинаково хорошо везде.

Fuze
Только не на MariaDB 10.4
По глупости повысил у себя на VPS марию с 10.3 до 10.4 и всё, при просмотре последних страниц комментариев сайт просто ложится.
  1. /system/controllers/comments/model.php => 261 => modelComments->getCommentsCount()
  2. SELECT COUNT(*) AS COUNT
  3. FROM cms_comments i
  4. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  5. Время выполнения 0.37463 секунд
  6. /system/controllers/comments/model.php => 297 => modelComments->getComments()
  7. SELECT i.*, r.score AS `is_rated`, u.nickname AS `user_nickname`, u.is_deleted AS `user_is_deleted`, u.avatar AS `user_avatar`, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) AS `is_online`
  8. FROM cms_comments i
  9. JOIN (SELECT id FROM cms_comments WHERE is_deleted IS NULL ORDER BY id DESC LIMIT 1048500, 20) c ON c.id = i.id LEFT JOIN cms_users AS u ON u.id = i.user_id
  10. LEFT JOIN cms_sessions_online AS online ON online.user_id = u.id
  11. LEFT JOIN cms_comments_rating AS r ON r.comment_id = i.id AND r.user_id='86'
  12. WHERE (i.is_deleted IS NULL) AND (i.is_approved = '1')
  13. ORDER BY i.date_pub DESC
  14. LIMIT 20
  15. Время выполнения 54.50465 секунд
Как мы видим, костыль для ускорения LIMIT OFFSET в виде
  1. JOIN (SELECT id FROM cms_comments WHERE is_deleted IS NULL ORDER BY id DESC LIMIT 1048500, 20) c ON c.id = i.id LEFT
на 10.4 не срабатывает. Возможно из-за их нового galera-new-claster. Как это всё настроить — нигде не нашел.
Проверил на тестовом сервере — картина та же. На Mariadb10.3 последние страницы комментариев открываются за одну секунду, на 10.4 — минуту. Если вообще не выпадает в ошибку 500.
Вчера гугльбот решил обойти комментарии — сайт просто лёг.

У кого много контента или комментариев, не обновляйтесь до 10.4!!!
#14 nginx + php-fpm for InstantCMS v2.x 20 июля 2019 в 10:33

Как по скорости работы по сравнению с апачем?

SpideR
У меня сайт пару лет крутится на nginx-php-fpm. Скорость вроде бы, также, как и на апаче (точно не медленнее).
Зато потребление оперативки втрое меньше. Это позволяет сильно экономить на VPS.
#15 FTP для Open Server 19 июля 2019 в 15:30
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.