Сообщение
E=mc2 » 25 мар 2015, 12:44
И Вам добрый день! Суть работы скрипта следующая:
-из базы вынимаются данные и формируется массив вида 0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,...
-msqli->close (Попутно вопрос. После выполнения этой команды в mySQL очищается память, буфер и т.д.? Или нужно проводить какие-то спец мероприятия?)
-цикл for. Берётся из массива кусок длиной n. Следующий шаг - смещается выборка на одну позицию вперёд и так до конца
0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,...
0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,...
0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,1,1,1,1,0,...
На каждом шаге цикла:
1. Готовятся исходные данные для расчёта. Кусок длиной n - один из них. Подготовленные исходные (протокол) вносяться в базу - соединение с базой, close.
2. Проводиться математический расчёт. Довольно затратный.
3. Результат расчёта в базу. Соединение с базой, UPDATE, close
Месяц назад XHE свободно обрабатывал этот скрипт в 8-10 потоков. Нужно считать параллельно, потому-что очень много вычислений. Было долго из-за ограничений процессора (i7 860) и нужно было переходить к обработке длинных массивов. Сменил проц и добавил памяти.
Имеем - таже Win7pro, VMware Workstation 11 (была 10), XHE 6.9.8, тот же XAMPP 3.2.1, то же самое РНР расширение для расчётов.
Изменилась только длина расчётных массивов в сторону увеличения. Больше чем вдвое.
Сбой возникает даже при запуске XHE третьим потоком. В четыре потока - уже после 7-8 шагов цикла.
Вроде каждый XHE обращается в базу к своим данным. В настойках базы все лимиты сняты (0). В php.ini также настройки лимитов увеличены. С чего им в очереди толкаться? Ввёл в FOR после 50 просчётов sleep(0.5) - лучшего ничего не придумал. Не помогает. Если переполняется буфер, то как его забивает? Чего сделать? Что пробовать?