@asapronov91

Как ускорить время работы WP All import?

Есть интернет-магазин на 12000 товаров.
Товары указаны в csv-файле, который подгружается по ссылке и обновляется раз в 30-60 минут.
Изображения товаров заданы ссылками на картинки и подгружаются по ссылке. Одна картинка весит 100-120Кб.

Но при импорте, такая картинка грузится 2 минуты. Из-за чего обновить товары превращается в приключение длиной не в одну кошачью жизнь.

Попытки запустить по cron или как указано здесь https://ivannikitin.com/2017/03/25/wp-all-import-cli/
результатов существенных не приносят.

Пробовали проверить ответ сервера, с которого тянем картинки, там тоже все нормально. Пробовали скачать картинки через wget, скачиваются моментально 33000 изображений закачиваются за 2 часа.

НО залить на сервер тоже не особый вариант. Скорость создания одного товара становится в районе минуты. Да и качать картинки, лить их на сервер не совсем правильное решение, ведь товары в файле обновляются, за неделю примерно +250-300 позиций. Поэтому и выбрали WP All Import, т.к. он позволяет сделать повторную загрузку при тех же настройках и настроить автоматический запуск обновлений.

Те, кто предоставляет услуги хостинга внятного тоже не могут ответить ничего, кроме "нужна более тонкая настройка сервера". Но не совсем понятно что именно там можно настроить.

Буду очень благодарен за подсказки, тем более возникает вопрос, что количество товаров сравнительно не большое.

Пара слов о сервере
Operating System Ubuntu 18.04 64bit Minimal
Disk Space 180 GB
Bandwidth 120 TB
Memory 8 GB
8 ядер

PS сталкиваемся с ошибками 504 - время ожидание ответа от веб-сервера, а также ошибкой Cannot allocate memory в процессе импорта. Попытки увеличить лимиты php не устраняются ошибки.
  • Вопрос задан
  • 1716 просмотров
Пригласить эксперта
Ответы на вопрос 3
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Во первых All import сам по себе не быстр, это расплата за универсальность.

Во вторых при импроте срабатывает куча экшенов и хуков, их можно отключить соответствующей настройкой, но вообще не стоит, при импорте картинок срабатывает автогенирация различных их размеров и вообще там целая цепочка событий.

Для ускорения, в вашем случае надо проводить кучу мероприятий

- чистка и оптимизация базы
- рефакторинг темы
- рефакторинг вызываемых хуков
- переключение на автогенерацию картинок на лету вместо встроенной
- оптимизация размеров выгрузки

И еще куча всего.

Сервер у вас нормальный, его зав глаза хватает. ну и вообще 2 минуты картинка, страшно подумать, что у вас там под капотом происходит, надо с этим разбираться.
Ответ написан
Комментировать
FoxCloud
@FoxCloud
Хостинг и облачные сервисы
Здравствуйте!
Для решения проблемы, рассмотрите варианты ниже.

1. Установите лимиты на PHP.
Не смотря на то, что вы уже установили лимиты, следует учитывать факт наличия на сервере нескольких версий PHP.
PHP версия нативная на сервере может быть одна, а версия для сайта может быть другая.

Как установить лимиты.
Способов установки лимитов много. Ниже представлены несколько их них:

1. Через файл .user.ini в корне сайта.
2. Через файл .htaccess в корне сайта.
3. На сервере глобально. Примеры: /etc/php.ini /opt/php73/etc/php.ini
4. В панели управления в настройках PHP.

Установите лимиты и проверьте, что они установились.
Для проверки:
- Создайте файл в корне сайта php-ver.php
- Внесите код ниже.
<?php
phpinfo()
- Откройте сайт xn--_-7sbbf2b7bj7b/php-ver.php
- Проверьте, чтобы лимиты, заданные вами точно установились.

max_execution_time = 90
memory_limit = 300M
post_max_size = 300M
upload_max_filesize = 300M

2. Сконфигурируйте лимиты на веб-сервере:
- Apache сервер:
Чаще всего в файле /etc/httpd/conf/httpd.conf
Параметр:
Timeout 7200 (7200 секунд = 2 часа, установите свое значение).

- Nginx сервер
Чаще всего в файле /etc/nginx/nginx.conf !секция http!
proxy_read_timeout 7200;
proxy_connect_timeout 300;
client_body_buffer_size 1024M;

3. Лимиты mysql
key_buffer_size = 512M
max_allowed_packet = 24M
query_cache_size=1024M
join_buffer_size=1024M
tmp_table_size=1024M
max_heap_table_size=1024M

Лимиты очень завышены, но вам должно хватить. Поэксперементируйте с ними.

Выполните приведенные выше решения и проблема должна решиться.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Обращайтесь если не разберётесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы