208 похожих чатов

Коллеги. Добрые день/утро/вечер. Есть задачка в БУС, работающая на кроне, принцип

примерно такой:

$resElements = CIBlockElement::GetList(...);
while ($arElement = $resElements->GetNext()) {
// тут мы получаем через curl и парсим цены с соседнего сайта, потому процедура не быстрая и длиться // несколько часов
CCatalogProduct::Update(...);
CIBlockElement::SetPropertyValuesEx(...);
}

проблема в том, что не всегда, но часто в процессе работы, на хостинге OM-KILLER убивает MySQL как самого прожорливого по памяти и всё падает. Да, знаю, правильный вариант это увеличить память и сделать SWAP (заказчику я уже высказал своё замечание по поводу создания машины без свопа).
Однако заинтересовался вопросом, а можно ли такое перехватить и подождать, пока MySQL снова не запуститься, а он потом снова стартует, буквально секунд через 5-10, и продолжить работу. На сях в свое время я так и писал, но там я напрямую работал с БД, как был отвал (по факту ни разу не случалось), просто sleep и реконект к базе. А вот на битриксе, возможен ли такой фокус?

3 ответов

12 просмотров

1. OOM-killer вроде как приходит когда память на сервере заканчивается, а обычно это происходит когда неправильно подобраны параметры - посчитайте сколько есть один процесс php, посмотрите на сколько процессов сконфигурирован httpd, прибавьте сопутствующее ПО, потом прибавьте количество соединений (там вроде как в идеале 1 соединению httpd должно быть 1 mysql) и посмотрите сколько памяти. Скорее всего когда сложите получиться что требуется больше оперативы чем у вас есть. 2. Что касается решения "здесь и сейчас", то можно действовать по-другому - добавьте постраничку. Т.е. поймайте количество элементов и запустите цикл по Н записей, на каждом круге которого будете получать и обрабатывать запрос в БП. Это несколько сократит потребление. Сейчас у вас mysql может подвисать на "Sending data". А вообще можно разрезать на потоки такую штуку и тоже очень неплохо пойдет.

Вячеслав-Трофимов Автор вопроса
Andrei Nikolaev
1. OOM-killer вроде как приходит когда память на с...

За идею по постраничке спасибо, не подумал и переписывать немного, т.к. заказчик сказал все решения по минимуму в часах, либо за спасибо :) Хотя мне кажется не спасёт, я в логах видел там MySQL киляется периодически, а мой скрипт работает раз в неделю, просто иногда этот момент приходится на время его работы. А вот все-таки, продолжение работы после перезапуска MySQL возможно? например, подключить epilog, который вроде как закрывает соединение и потом снова пролог, прокатит? (если конечно перехват аварийного завершения в глубине ядра битрикса вообще возможен)

Вячеслав Трофимов
За идею по постраничке спасибо, не подумал и переп...

Не думаю что это возможно без совсем уж черной магии. Проще в таком случае на очереди первести или потюнить

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

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
10
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
8
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Карта сайта