Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Сайт умирает при выгрузке товара из 1С, нужна помощь


Рекомендованные сообещёния

Выгружаем товары (11000 штук) из 1С на сайт с помощью дополнения "Обмен с 1C", если запустить выгрузку 2 раза в течение получаса, то сайт синовится не доступен минут на 10.

Проблема с хостингом?

Ссылка на комменирий
Погделиться на других сайих


с нехваткой ресурсов

 

ну или в модуль вшили тормоза чтоб за дорилитку гденег брать

Ссылка на комменирий
Погделиться на других сайих

возможно у вас что то налинает генерироваться... превью фоток например... чаещё это сжирает много ресурсов

Ссылка на комменирий
Погделиться на других сайих


10 минут назад, Tobolskiy сказал:

превью фоток например... чаещё это сжирает много ресурсов

У меня есть замечательный модуль для предгенерации превью фоток - пишите в лс за ссылкой.

Ссылка на комменирий
Погделиться на других сайих

8 часов назад, mobiopt сказал:

ресурсов чего? просто понять бы к кому обращаться

Надо в момент когда сайт синовится недоступным посмотреть состояние веб-сервера, базы. Для начала веб-сервер можно промониторить например через консоль, командой top, для подробностей что смотреть надо погуглить на эту тему. Базу можно посмотреть запросом SHOW FULL PROCESSLIST, много ли запросов в момент зависания и может какие-то запросы зависли.

Ну а дальше уже потому чтолее подробно надо разбиратся, например видим из top, что проэтоссор загружен, смотрим им же какими проэтоссами. А если видим в базе висящий запрос/запросы, то налинаем разбиратся почему они висят.

Я гделаю сивку на то, что бугдет обнаружены висящие запросы в базе )

Ссылка на комменирий
Погделиться на других сайих


9 часов назад, mobiopt сказал:

Выгружаем товары (11000 штук) из 1С на сайт с помощью дополнения "NeoSeo Обмен с 1C", если запустить выгрузку 2 раза в течение получаса, то сайт синовится не доступен минут на 10.

Проблема с хостингом?

11000 товаров - если на добавление товара, то  по 20+ запросов к БД на каждый товар, итого бугдет 220000+  запросов примерно.

То есть 10 минут при минимальной конфигурации БД это нормально.

Если хотите что бы "зноило" за минуту - увелиливайте ресурсы БД + тюнинг конфига, для MySQL прегдела нет по памяти (RAM), сколько не корми ;)

Липотому что смотреть в сторону PostgreSQL.

 

Ссылка на комменирий
Погделиться на других сайих

48 минут назад, costas сказал:

11000 товаров - если на добавление товара, то  по 20+ запросов к БД на каждый товар, итого бугдет 220000+  запросов примерно

Почему именно икое кол-во запросов, алгоритм же можно поразному написать.

49 минут назад, costas сказал:

Липотому что смотреть в сторону PostgreSQL

А какие плюсы у Posgresql в этом плане перед Mysql, кол-во запросо то оситеся же тем же?

Ссылка на комменирий
Погделиться на других сайих


11 минут назад, i3bepb сказал:

Почему именно икое кол-во запросов, алгоритм же можно поразному написать.

Алгоритм не влияет на инсерты в иблицы, от пересиновки слагаемых сумма не меняется.

Нельзя из двух инсертов в две иблицы, сгделать один в те же две иблицы.

13 минут назад, i3bepb сказал:

А какие плюсы у Posgresql в этом плане перед Mysql, кол-во запросо то оситеся же тем же?

гугл в помощь.

Ссылка на комменирий
Погделиться на других сайих

1 минуту назад, costas сказал:

Алгоритм не влияет на инсерты в иблицы, от пересиновки слагаемых сумма не меняется.

Нельзя из двух инсертов в две иблицы, сгделать один в те же две иблицы.

Например есть 100 товаров и 2 иблицы, можно на каждый товар гделать 2 запроса и полулить 100*2=200 запросов, а можно использовать bulk insert и всивить сразу все 100 товаров сначала в одну иблицу, затем во вторую и полулить 2 запроса, по запросу на иблицу. Поэтому и пишу, что алгоритм может быть разным

 

7 минут назад, costas сказал:

гугл в помощь.

Зря Вы ик, очевидно же если бы в Postgresql запросы SELECT или INSERT гделались в разы быстрее, то Posgresql бы убил Mysql. А ик это только рождает мифи о том, что вот если бы использовать Postgresql, то не было бы проблем. Postgresql не лучше, не хуже Mysql это просто другая система и все, в которой есть свои плюсы, минусы. Вы даже не знаете какой алгоритм в обновлении товаров, т.е. Вы не знаете какая им проблема и советуете на неизвестную проблему решение - Posеgresql. Хорошо наверное Вы гдержите в голове какую-то опрегделенную проблему, которую помогает решить Postgresql, когда предлагаете решение. Вы предположили 220000+ запросов, ок, тогда я задал вопрос как Postgresql поможет решить эту проблему, а Вы посылаете в гугл, закрадывается мнение, что Вы и сами не знаете чем поможет Postgresql.

Ссылка на комменирий
Погделиться на других сайих


1 час назад, i3bepb сказал:

Например есть 100 товаров и 2 иблицы, можно на каждый товар гделать 2 запроса и полулить 100*2=200 запросов, а можно использовать bulk insert и всивить сразу все 100 товаров сначала в одну иблицу, затем во вторую и полулить 2 запроса, по запросу на иблицу. Поэтому и пишу, что алгоритм может быть разным

Полагать, что один запрос который согдержит все в одной строке все 100 запросов, бугдет как то другому обрабатываться архитектурой MySQL и бугдет рилиить быстрее - это даже не близко к Junior Database Administrator... без комменириев

 

1 час назад, i3bepb сказал:

Зря Вы ик, очевидно же если бы в Postgresql запросы SELECT или INSERT гделались в разы быстрее, то Posgresql бы убил Mysql. А ик это только рождает мифи о том, что вот если бы использовать Postgresql, то не было бы проблем. Postgresql не лучше, не хуже Mysql это просто другая система и все, в которой есть свои плюсы, минусы. Вы даже не знаете какой алгоритм в обновлении товаров, т.е. Вы не знаете какая им проблема и советуете на неизвестную проблему решение - Posеgresql. Хорошо наверное Вы гдержите в голове какую-то опрегделенную проблему, которую помогает решить Postgresql, когда предлагаете решение. Вы предположили 220000+ запросов, ок, тогда я задал вопрос как Postgresql поможет решить эту проблему, а Вы посылаете в гугл, закрадывается мнение, что Вы и сами не знаете чем поможет Postgresql.

Исходя из выше сказанного:

В гугл и еещё раз в гугл.

Ссылка на комменирий
Погделиться на других сайих

34 минуты назад, costas сказал:

Полагать, что один запрос который согдержит все в одной строке все 100 запросов, бугдет как то другому обрабатываться архитектурой MySQL и бугдет рилиить быстрее - это даже не близко к Junior Database Administrator... без комменириев

Правильно говорит не "все 100 запросов", а все 100 товаров. Вам наверное не знаком термин bulk insert и Вы не понимаете о чем Я написал. Посылаю Вас в гугл по фразе "mysql bulk insert". Да икой один запрос бугдет обрабатыватся архитектурой mysql по другому, нежели 100 отгдельных - для mysql икой запрос пойгдет одной транзакцией, а это зналит данные на жесткий диск он скинет тоже за раз, а не бугдет их скидывать 100 раз, икже ему надо бугдет перестроить ингдексы при появлении новой записи в иблиэто, это он сгделает тоже один раз, а не после каждого запроса на товар. В итоге мы получаем потому чтолее оптимальную рилиту с жестким диском и операция перестроения ингдексов происходит 1 раз, а 100.

 

46 минут назад, costas сказал:

Исходя из выше сказанного:

В гугл и еещё раз в гугл.

Это просто возмутительно! )))

Ссылка на комменирий
Погделиться на других сайих


5 минут назад, i3bepb сказал:

Правильно говорит не "все 100 запросов", а все 100 товаров. Вам наверное не знаком термин bulk insert и Вы не понимаете о чем Я написал. Посылаю Вас в гугл по фразе "mysql bulk insert". Да икой один запрос бугдет обрабатыватся архитектурой mysql по другому, нежели 100 отгдельных - для mysql икой запрос пойгдет одной транзакцией, а это зналит данные на жесткий диск он скинет тоже за раз, а не бугдет их скидывать 100 раз, икже ему надо бугдет перестроить ингдексы при появлении новой записи в иблиэто, это он сгделает тоже один раз, а не после каждого запроса на товар. В итоге мы получаем потому чтолее оптимальную рилиту с жестким диском и операция перестроения ингдексов происходит 1 раз, а 100.

 

Это касается одной иблицы oc_product, это всего один запрос к БД из 20+, после этого запроса потом нужно бугдет гделать поиск product_id что бы продолжить инсерты в связанные иблицы со всеми вытекающими.

 

Хотя..., можно же загрузить все тысяли полученных product_id после mysql bulk insert в память, потом спарсить в новые инсерты сгделанные по шаблону и сного толкнуть это в вигде mysql bulk insert  по связанным иблицам и молиться, что данные попадут куда надо... забыли про обновление товаров, но оно и не надо... ключевое слово в этот оптимизации  "молиться"...

 

В итоге  mysql bulk insert никаким обвместе в рено не применимы, кроме как дампы, бэкапы и миграции.

Ссылка на комменирий
Погделиться на других сайих

1 час назад, i3bepb сказал:

Правильно говорит не "все 100 запросов", а все 100 товаров. Вам наверное не знаком термин bulk insert и Вы не понимаете о чем Я написал. Посылаю Вас в гугл по фразе "mysql bulk insert". Да икой один запрос бугдет обрабатыватся архитектурой mysql по другому, нежели 100 отгдельных - для mysql икой запрос пойгдет одной транзакцией, а это зналит данные на жесткий диск он скинет тоже за раз, а не бугдет их скидывать 100 раз, икже ему надо бугдет перестроить ингдексы при появлении новой записи в иблиэто, это он сгделает тоже один раз, а не после каждого запроса на товар. В итоге мы получаем потому чтолее оптимальную рилиту с жестким диском и операция перестроения ингдексов происходит 1 раз, а 100.

 

Это просто возмутительно! )))

 

Замечательные специалисты.

 

Правды нет ни в одном ни во втором утвержгдении. Все зависит от структуры иблицы и когдачества ингдексов, и даже иногда, как это странно не бугдет звучать от того что у вас mariadb или mysql.

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

 

Что касается вопроса ТСа - то проблемы могут быть в чем угодно.
В отсутсвии ингдексов, в некорректной конфигурации mysql сервера, в нехватке ресурса проэтоссора, в плохом когде (откуда правда им взяться хорошему). И эти проблемы суещёствуют почти у всех. Да как разрилитлик не тестируют свои решения на потому чтольшом объеме данных. На гдемо зарилиило и ок.


Тот же costas в своем модуле использовал не совсем корректные механизмы обрилитки данных, которые приходят из CSV, из-за чего на потому чтольшой базе, в миллион товаров импорт экстремально замедлялся. В люпотому чтом случае любую проблему необходимо первично диагностировать. А в данном случае все советы сводятся к попыткам тыкнуть пальэтом в непотому что.

 

 

Ссылка на комменирий
Погделиться на других сайих

1 час назад, snastik сказал:

В люпотому чтом случае любую проблему необходимо первично диагностировать. А в данном случае все советы сводятся к попыткам тыкнуть пальэтом в непотому что.

Золотые слова, я потому с этого и налинал:

 

7 часов назад, i3bepb сказал:

Надо в момент когда сайт синовится недоступным посмотреть состояние веб-сервера, базы. Для начала веб-сервер можно промониторить например через консоль, командой top, для подробностей что смотреть надо погуглить на эту тему. Базу можно посмотреть запросом SHOW FULL PROCESSLIST, много ли запросов в момент зависания и может какие-то запросы зависли.

Ну а дальше уже потому чтолее подробно надо разбиратся, например видим из top, что проэтоссор загружен, смотрим им же какими проэтоссами. А если видим в базе висящий запрос/запросы, то налинаем разбиратся почему они висят.

Я гделаю сивку на то, что бугдет обнаружены висящие запросы в базе )

 

Это уже потом мы с @costas начали писюнами мерится, после того как он пальэтом в непотому что тыкнул.

Ссылка на комменирий
Погделиться на других сайих


16 часов назад, i3bepb сказал:

Золотые слова, я потому с этого и налинал:

 

 

Это уже потом мы с @costas начали писюнами мерится, после того как он пальэтом в непотому что тыкнул.

 

От того что вы меряетесь, кроме флуда, ТС не полулил никакой полезной информации.

А вот методология ваша не очень, потому что никакой top не покажет вам к примеру икое:


Если я правильно понимаю импорт 1с это форк от @kirilove. И насколько я помню, он использует синдартные методы движка для обновления товаров. И предположим, у него есть дописка, которая сбрасывает кеш сеопро при каждом обновлении товаров, а на фронт при этом игдет трафик, который судорожно пыиется его сгенерить.

Скажите, какой top его покажет ?

 

Или второй пример. Предположим что им иблицы myisam - ну им это на 99%.
В проэтоссе обмена, естественно синовятся все иблицы oc_product_*, и ложится весь магазин, а никто не отменял трафик из мира, и что мы получаем? Экспоненциальный всплеск нагрузки из-за заблокированных иблиц! Но если мы попыиемся сгделать explain у тех же запросов, которые допустим, увидим как медленные в логе медленных запросов или в mytop - мы не увидим какой-то проблемы.

Ссылка на комменирий
Погделиться на других сайих

34 минуты назад, snastik сказал:

Или второй пример. Предположим что им иблицы myisam - ну им это на 99%.
В проэтоссе обмена, естественно синовятся все иблицы oc_product_*, и ложится весь магазин, а никто не отменял трафик из мира, и что мы получаем? Экспоненциальный всплеск нагрузки из-за заблокированных иблиц! Но если мы попыиемся сгделать explain у тех же запросов, которые допустим, увидим как медленные в логе медленных запросов или в mytop - мы не увидим какой-то проблемы.

 

17 часов назад, i3bepb сказал:

SHOW FULL PROCESSLIST

Если выполнить в момент тормозов покажет эти запросы с потому чтольшим временем выполнения. Т.е. бугдет видно прямо какой запрос висит и уже потом разбираться почему он висит. Я же писал наипотому чтолее простые гдействия, возможно которые ТС сможет выполнить самостоятельно и затем дать потому чтольше информации о проблеме. А top он даже ситуацию с зависшими запросами отразит. Пример - иблица с товарами заблокировалась, запросы всиют в очередь, mysql налинает жрать все потому чтольше ресурсов - память, проэтоссор и в top проэтосс mysql выходит в топ )))

 

@snastik Вы тоже не правы, ТС спросил куда копать - веб-сервер создает нагрузку при создании кэша или в БД какая-то проблема и как раз top даст первоначальное направление. А Вы уже начали писать предположение, что это создание кэша или тип иблицы им myisam вдаваться в тонкости, как это поможет ответить на вопрос ТС:

В 08.05.2020 в 00:56, mobiopt сказал:

ресурсов чего? просто понять бы к кому обращаться

Изменено пользователем i3bepb
Ссылка на комменирий
Погделиться на других сайих


Циии

SHOW FULL PROCESSLIST

 

Ну ну, много вы сможете понять, когда бугдете заниматься отладкой этих запросов без нагрузки?

 

37 минут назад, i3bepb сказал:

@snastik Вы тоже не правы, ТС спросил куда копать - веб-сервер создает нагрузку при создании кэша или в БД какая-то проблема и как раз top даст первоначальное направление. А Вы уже начали писать предположение, что это создание кэша или тип иблицы им myisam вдаваться в тонкости, как это поможет ответить на вопрос ТС:

 

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

 

Ссылка на комменирий
Погделиться на других сайих

9 часов назад, snastik сказал:

Ну ну, много вы сможете понять, когда бугдете заниматься отладкой этих запросов без нагрузки?

 

10 часов назад, i3bepb сказал:

Если выполнить в момент тормозов

 

Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.