сбой mysqli::mysqli()

Все вопросы касающиеся использования
программы можно задать здесь
Ответить
E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

сбой mysqli::mysqli()

Сообщение E=mc2 » 17 фев 2015, 13:59

Один и тот же скрипт после перехода на 4.9.8 при запуске третьего потока выдаёт:
Warning: mysqli::mysqli(): (HY000/2002): Ein Socketvorgang konnte nicht ausgef?hrt werden, da dem System Pufferspeicher fehlte oder eine Warteschlange voll war.
Раньше работал и в десять потоков и больше... Вернулся на 4.9.7 не помогло. PHP.ini вроде всё настроено как всегда.
Чёто никак не найду причину.
Подскажите, пожалуйста, как вылечить.

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение E=mc2 » 27 фев 2015, 11:21

А чё Support приболел? Уж месяц как не видно...

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: сбой mysqli::mysqli()

Сообщение Support » 27 фев 2015, 12:25

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

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение E=mc2 » 24 мар 2015, 19:01

Гляньте пожалуйста.
Содержимое mysql_error:

Код: Выделить всё

2015-03-24 16:53:07 2400 [Note] Plugin 'FEDERATED' is disabled.
2015-03-24 16:53:07 7e0 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2015-03-24 16:53:07 2400 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-03-24 16:53:07 2400 [Note] InnoDB: The InnoDB memory heap is disabled
2015-03-24 16:53:07 2400 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2015-03-24 16:53:07 2400 [Note] InnoDB: Memory barrier is not used
2015-03-24 16:53:07 2400 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-03-24 16:53:07 2400 [Note] InnoDB: Not using CPU crc32 instructions
2015-03-24 16:53:07 2400 [Note] InnoDB: Initializing buffer pool, size = 16.0M
2015-03-24 16:53:07 2400 [Note] InnoDB: Completed initialization of buffer pool
2015-03-24 16:53:07 2400 [Note] InnoDB: Highest supported file format is Barracuda.
2015-03-24 16:53:07 2400 [Note] InnoDB: The log sequence numbers 1665234 and 1665234 in ibdata files do not match the log sequence number 1665284 in the ib_logfiles!
2015-03-24 16:53:07 2400 [Note] InnoDB: Database was not shutdown normally!
2015-03-24 16:53:07 2400 [Note] InnoDB: Starting crash recovery.
2015-03-24 16:53:07 2400 [Note] InnoDB: Reading tablespace information from the .ibd files...
2015-03-24 16:53:08 2400 [Note] InnoDB: Restoring possible half-written data pages 
2015-03-24 16:53:08 2400 [Note] InnoDB: from the doublewrite buffer...
2015-03-24 16:53:08 2400 [Note] InnoDB: 128 rollback segment(s) are active.
2015-03-24 16:53:08 2400 [Note] InnoDB: Waiting for purge to start
2015-03-24 16:53:08 2400 [Note] InnoDB: 5.6.20 started; log sequence number 1665284
2015-03-24 16:53:08 2400 [Note] Server hostname (bind-address): '*'; port: 3306
2015-03-24 16:53:08 2400 [Note] IPv6 is available.
2015-03-24 16:53:08 2400 [Note]   - '::' resolves to '::';
2015-03-24 16:53:08 2400 [Note] Server socket created on IP: '::'.
2015-03-24 16:53:08 2400 [Note] Event Scheduler: Loaded 0 events
2015-03-24 16:53:08 2400 [Note] c:\xampp\mysql\bin\mysqld.exe: ready for connections.
Version: '5.6.20'  socket: ''  port: 3306  MySQL Community Server (GPL)
Как это дело вылечить? Что пробовать?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: сбой mysqli::mysqli()

Сообщение bigfozzy » 24 мар 2015, 20:00

Добрый день. А можно подробнее ?
В каких случаях такое возникает ?

а то непонятно даже что смотреть.
Спасибо. Если что не для общего доступа - то можно в личку.

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение 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) - лучшего ничего не придумал. Не помогает. Если переполняется буфер, то как его забивает? Чего сделать? Что пробовать?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: сбой mysqli::mysqli()

Сообщение bigfozzy » 25 мар 2015, 13:29

Так понимаю вопрос связан с PHP, моих знаний тут маловато, я попробую уточнить это у наших PHP специалистов.

А так - на вскидку - попробовать найти на php.net тот PHP, что будет обрабатывать это без багов (или взять PHP из старого хумана). Также возможно разбить скрипт на несколько частей. Или слегка поменять алгоритм. Или взять другую СУБД. Но это так - на вскидку, потому что знаний по этому поводу недостаточно, кс сожалению.

По msqli->close - вот тут есть советы : http://stackoverflow.com/questions/2879 ... sqli-close

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение E=mc2 » 25 мар 2015, 14:34

Спасибо, буду благодарен за любую дополнительную информацию.

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение E=mc2 » 25 мар 2015, 15:17

Похоже удалось решить. Переделал скрипт. Использовал не буферизированый запрос:

Код: Выделить всё

$mysqli->query($qu, MYSQLI_USE_RESULT);

E=mc2
Сообщения: 124
Зарегистрирован: 16 май 2014, 00:57

Re: сбой mysqli::mysqli()

Сообщение E=mc2 » 26 мар 2015, 12:49

При запуске очередного потока выскакивает:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes) in C:\XWeb\Human Emulator Advanced\My Scripts\...
Это как побороть можно? В том смысле, что прибавить доступной памяти?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: сбой mysqli::mysqli()

Сообщение bigfozzy » 26 мар 2015, 14:41


Ответить