Drupal 8 скорость Feeds import на разных хостингах

Главные вкладки

Аватар пользователя Danunafik Danunafik 23 мая 2020 в 2:57
1

Здравствуйте. Кто может понять и довести неразумному, почему на reg.ru скорость обновления товаров через feeds import из csv минимум на 40% быстрее чем на остальных хостингах (бегет, таймвеб, спринтхост, форнекс...) ? На некоторых просто в разы медленнее на сопоставимых тарифах или даже дороже. Даже на облачном VPS (4 ядра, настройки дефолтные) на рег.ру обновление медленнее раза в 2, чем на том же виртуальном VIP хостинге на этом же рег.ру. Сам поток обновления feeds потребляет в среднем всего 7% процессора на тех хостингах, на которых это можно посмотреть. На локальном компьютере тоже потребляет всего 7%. Что там на рег такого настроено, где узкое место ? Просто 200 000 товаров, и нужно обновлять их побыстрее. Но незадача - на рег.ру размер базы данных максимум 4 Гб. Прям чернуха неудач.
upd: юмор - сейчас от одного хостера пришло поздравление с наступающим 2020 г. К некоторым хостингам определенно вопросов быть не может, в стазисе.

Комментарии

Аватар пользователя andypost@drupal.org andypost@drupal.org 23 мая 2020 в 5:03

Нужно мерить точнее, что именно на каждом хостинге быстрее или медленнее.
Например, импорт может упираться а файловую систему, а не в базу или процессор.
Стоит поставить xhprof/blackfire/newrelic - любой расскажет больше, чем общий замер времени. А так можно только гадать...

Аватар пользователя Danunafik Danunafik 23 мая 2020 в 5:26

Попробую разобраться, не в теме этого. Пока нашел хэндихост в 2 раза дешевле рега, скорость обновления самого большого прайса на 70000 всего на 5% хуже, а админка друпала даже быстрее работает.

Аватар пользователя Danunafik Danunafik 29 мая 2020 в 2:23
1

Взял для тестов VPS. Нашел что innodb_flush_log_at_trx_commit = 2 в my.cnf увеличивает скорость загрузки прайсов на 50-70%.
Вопрос еще. У меня 5 прайсов, соответственно 5 потоков feeds. Они прописываются в Queue, на выполнение каждого потока дано 300 сек. Запускаются по крону, который срабатывает раз в 6 минут. Всё выполняется последовательно.
А если я всё оставлю так, только cron буду запускать к примеру раз в 2 минуты, у меня потоки feeds начинают выполняться параллельно. Нагрузка на ядра возрастает до 100% (смотрю в консоли atop). В итоге прайс-листы обновляются быстрее. Правда появились ошибки в базе - deadlock. Прописал в settings.php:
$databases['default']['default'] = array (
'init_commands' => [
'isolation' => "SET SESSION tx_isolation='READ-COMMITTED'",
'lock_wait_timeout' => 'SET SESSION innodb_lock_wait_timeout = 20',
'wait_timeout' => 'SET SESSION wait_timeout = 600',
],
);
Ошибки пропали. Товары из прайс-листов не пересекаются, так как у них личное поле для артикула уникального.
Вопрос простой, ничего страшного я не намудрил ?