|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Это копия аналогичной темы из подфорума по MySQL, т.к., возможно, причина проблемы кроется в PHP-части. Если кратко: есть php-скрипт, в числе функций которого добавление новой записи в таблицу (или же обновления существующей, если запись для данного пользователя уже есть). В боевом режиме функция может дёргаться примерно 50 раз в секунду, при этом скорость добавления записей достигает максимум 5 в секунду, т.е. добавление 7500 записей закончится только через неприличные 25 минут. select-запросы из той же таблицы выполняются за приемлемое время. Структура таблицы – 4 поля: одно int(11), одно datetime и два varchar длиной 10 и 32, последний из которых primary index (кривоватый момент, но, судя по всему, он бы скорее влиял на скорость выборки). InnoDB. Как видно из кода ниже, сам запрос тоже довольно простой. Пока не могу понять, лежит ли причина в php или mysql-части. Явно что-то не так. Пробовал менять innodb_flush_log_at_trx_commit на 0 и 2 (настройка в MySQL), ощутимой разницы не дало. Использование в php постоянных кэшируемых соединений помогло предотвратить перегрузки сервера, имевшие место ранее при подобных нагрузках. Самый частый ответ на подобный вопрос – объединять insert-запросы в один, но, как было упомянуто ранее, все данные приходят от разных пользователей, и мой нубский мозг не может пока представит, возможно ли вообще объединение инсертов в этой ситуации. php-код: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
Буду рад любой помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 10:31 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Надо смотреть в что сервер упирается. Скорее всего затык на COUNT(*) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 11:04 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
HettСкорее всего затык на COUNT(*)Возможно, если поле tb_uid не проиндексировано. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 11:13 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Кстати, нафига семь параметров биндить поодиночке как строковые? Возвращаемых то значений нет. Можно массивом в execute() передать. Другой вопрос, все ли передаваемые в запрос параметры должны быть строковыми? Возможно, :uid и :gid, если это какие-то идентификаторы юзера/группы, есть числовые. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 11:20 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
HettСкорее всего затык на COUNT(*) Точно нет, там пока таблица пустая, да и с единственным уникальным столбцом. Отрубил выборку оттуда – результат тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 11:33 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleДругой вопрос, все ли передаваемые в запрос параметры должны быть строковыми? Возможно, :uid и :gid, если это какие-то идентификаторы юзера/группы, есть числовые. :uid и :gid строки, :uid первичный и уникальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 11:37 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleHettСкорее всего затык на COUNT(*)Возможно, если поле tb_uid не проиндексировано. в innodb индекс не поможет, движок все таки версионный ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 12:01 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting:uid и :gid строки, :uid первичный и уникальный.Эх, строки всяко дольше/сложнее сравнивать, а это непременно произойдет при проверке по уникальному индексу. В этом смысле числа существенно выигрывают. Ну и сам движок InnoDB не слишком быстрый в ряде случаев. Не пробовали таблицу конвернуть в MyISAM? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 12:24 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hettв innodb индекс не поможет, движок все таки версионныйЭммм... Не вполне понимаю, что Вы имеете в виду. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 12:29 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleНе пробовали таблицу конвернуть в MyISAM? Пробовал. Если что, на данный момент таблица крохотная, ~100 записей, т.е. тормоза вряд ли вызваны сравнением. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 12:46 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
коннект долгий? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 13:12 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingна данный момент таблица крохотная, ~100 записейНу это совсем ни о чем. Есть смысл построить временной профиль выполнения скрипта с целью поискать долгое место. http://php.net/manual/ru/function.microtime.php поможет. Ну и ещё момент.gpbetatestingВ боевом режиме функция может дёргаться примерно 50 раз в секундуНадо полагать, функция вызывается из единожды запущенного скрипта. Если так, то какой смысл 50 раз в секунду коннектиться к серверу (а это штука накладная, даже на локалхосте) и подготавливать запрос prepare()? Это можно сделать один раз за пределами функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 13:31 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleНадо полагать, функция вызывается из единожды запущенного скрипта. Если так, то какой смысл 50 раз в секунду коннектиться к серверу (а это штука накладная, даже на локалхосте) и подготавливать запрос prepare()? Это можно сделать один раз за пределами функции. Вот здесь был бы очень благодарен за просвещение, как именно можно реализовать подобное. По сути дела да, сейчас схема такая: дёргается скрипт -> выполняется коннект -> выполняется функция. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 13:39 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Про коннект прогнал, он же и так за пределами функции. Ну туда же и prepare() просится. Внутрь функции $stmt передать по ссылке или через global, $dbh тоже. Не вполне понимаю смысл передачи подобных ресурсов по значению. gpbetatestingПо сути дела да, сейчас схема такая: дёргается скрипт -> выполняется коннект -> выполняется функция.Только я не понял теперь, действительно ли весь скрипт вместе с коннектом вызывается 50 раз в секунду (о, тут веселый шанс впереться в лимит на кол-во коннектов у мускуля!), или, всё же, скрипт запущен единожды и из него на одном коннекте 50 раз в секунду вызывается функция добавления строки. Например, в цикле. gpbetatestingвсе данные приходят от разных пользователейЭммм... Это веб-страничка регистрации пользователя на каком-то сайте или что? Ещё момент. Агрегатную функцию из запроса "SELECT COUNT(*) from `banned`..." вполне можно убрать. Думаю, вполне достаточно что-то вроде "SELECT 1 FROM `banned` WHERE `tb_uid` = '$uuid' LIMIT 1". А в результате смотреть, вернулась ли одна запись или ноль записей. При таком раскладе поиск в таблице прекращается после первой найденной записи, в то время как для COUNT() требуется найти все записи (даже если их всего одна) и потом посчитать количество не-NULL-евых значений (впрочем, для варианта с COUNT(*) есть какая-то внутренняя оптимизация). Для таблицы из сотни строк на глазок не будет заметно, конечно, но сделайте миллион записей с повторяющимися значениями... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 14:35 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleТолько я не понял теперь, действительно ли весь скрипт вместе с коннектом вызывается 50 раз в секунду (о, тут веселый шанс впереться в лимит на кол-во коннектов у мускуля!), или, всё же, скрипт запущен единожды и из него на одном коннекте 50 раз в секунду вызывается функция добавления строки. Например, в цикле. Первый случай, вкупе с "PDO::ATTR_PERSISTENT, true" и заранее увеличенным лимитом подключений. vkleЭммм... Это веб-страничка регистрации пользователя на каком-то сайте или что? Похожий принцип, отправка данных с созданием новой записи, если её ещё нет для данного пользователя, или с обновлением существующей. Насчёт добавления в цикле, как быть, если мы хотим отправить клиенту результат добавления именно его записи? Ведь там в конце функции идёт echo для этого. А цикл, насколько я понимаю, будет добавлять их "пачками". Про SELECT COUNT(*) учту, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 14:48 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingА цикл, насколько я понимаю, будет добавлять их "пачками".Цикл это будет делать на одном ресурсе коннекта, а не на полусотне вновь создаваемых. Ибо, ресурс, ссылка на который хранится в переменной $dbh, не манна небесная, с неба не падает. Экземпляр класса PDO с соответствующим драйвером создается с нуля при каждом запуске скрипта. Это затратно, несмотря на атрибут "постоянный". Временной профиль выполнения скрипта сделали? Определили, сколько микросекунд занимает коннект, сколько селект и сколько инсерт/апдейт? Из того, что Вы сказали ранее о почти пустых таблицах, проблема видится только в долгом коннекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 15:27 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Еще можно в 2 раза меньше дергать MySQL server. Вместо 2-х prepare() и execute() использовать только query() заранее подготовив строку запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 15:36 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Посмотрел время создания коннекта через Код: php 1. 2. 3. 4. 5. 6.
В функции вставки в случае успеха клиенту приходил ответ с $contime. Число не выходит за пределы 0.0001-0.0002 секунд. Кроме того, ответ приходит моментально, а вот в phpmyadmin видно, что записи добавляются медленно, но в логах их скорость тоже почему-то высокая. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 16:36 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Сама же вставка вместе с подготовкой во время аналогичной проверки выдавала 0.0003-0.0005с, редко были числа порядка 0.01 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 16:42 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingСама же вставка вместе с подготовкой во время аналогичной проверки выдавала 0.0003-0.0005с, редко были числа порядка 0.01Ага, другими словами, этот фрагмент скрипта легко может лететь аж до тысячи вставок в секунду, а то и быстрее. Очевидно, проблема не в этом месте. Как ведут себя остальные этапы, сколько времени вообще выполняется скрипт от первой до последней строчки? Справедливости ради замечу, что это будет время _выполнения_ скрипта, в которое не входит, например, его разбор и проверка синтаксиса интерпретатором PHP при запуске. gpbetatestingа вот в phpmyadmin видно, что записи добавляются медленноВизуально медленно или по выводимому времени? Визуально медленно вполне объяснимо, это же довольно монструозное приложение с кучей всяких файлов и скриптов. Пока всё отработает, загрузится, да браузер пошевелится... Ну а если по выводимому времени судить, то сколько численно показывает? И да, Вы знаете алгоритм вычисления времени в phpMyAdmin, знаете, что именно означает это число и в каких условиях оно получено? Вот я не знаю, а значит, и не могу судить о том, насколько хорошо или плохо работает запрос. ;-) Но могу сравнить с чем-то аналогичным. А ещё можно выполнить запрос в консольном клиенте mysql, он тоже время показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 17:20 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Весь скрипт выполняется в среднем за 0.0006с. Сейчас попробовал отправить 100 запросов со скоростью 60 в секунду и параллельно дёргать функцию, показывающую число записей в таблице – все отправленные записи добавились только через 30 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 17:46 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingпараллельно дёргать функцию, показывающую число записей в таблицеСмотрите реальное число записей функцией COUNT() или из статистики дергаете? Статистика на InnoDB и дольше тормозить умеет. А вот если реальное... это странно вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 17:55 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Через COUNT() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 17:57 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Ну это уж явно не PHP-шная проблема. А можете пояснить попобробнее вот этот момент?gpbetatestingдобавление 7500 записей закончится только через неприличные 25 минутПри 50 запросов/сек это получается 150 секунд или 2,5 минуты на все вставки от начала и до окончания. Вот прогнали Вы эти 7500 запросов за 2,5 минуты. А в таблице новые записи одна за другой неспешно стали появляться в последующие 22,5 минуты, или как? Сперва то, прочитав Ваш пост, я понял его так, что следующая вставка начинается после окончания предыдущей, что весь скрипт выполняется слишком долго, образуется очередь... Но теперь, спустя пол-дня, удалось понять, что скрипт работает быстро, и проблема в чем-то в другом. Но сама проблема стала менее понятной. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 18:22 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Ещё момент: проверил – стоял маленький innodb_buffer_pool_size (128M при оперативке сервера в 4G). Поставил 3G, но это никак не повлияло на скорость Была мысль, что там занимается весь пул, и свежие запросы ждут, пока старые его освободят. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 18:23 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleА можете пояснить попобробнее вот этот момент?gpbetatestingдобавление 7500 записей закончится только через неприличные 25 минутПри 50 запросов/сек это получается 150 секунд или 2,5 минуты на все вставки от начала и до окончания. Вот прогнали Вы эти 7500 запросов за 2,5 минуты. А в таблице новые записи одна за другой неспешно стали появляться в последующие 22,5 минуты, или как? Если вкратце, максимальная скорость добавления записей в таблицу около 5 в секунду. Соответственно я хоть 1000 запросов за секунду могу отправлять, они там как будто в очередь выстраиваются. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 18:26 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, По большому счету, без очереди не получится. Другое дело, как быстро она движется. Вот смотрите, на таблице имеется уникальный ключ. При совпадении значения ключевого поля запрос должен изменить свое поведение с инсерта на апдейт. Теперь ситуация. Таблица пустая. Пришли одновременно два запроса с одним и тем же значением ключевого поля. Каков ожидаемый результат, на Ваш взгляд? ;-) Давайте по порядку. Две записи в таблице с одинаковым первичным ключом не имеют права существовать. В этой ситуации необходимо сделать один инсерт и один апдейт. Следовательно, какой-то из этих двух запросов станет первым, а какой-то вторым. Соответственно, второй запрос не может быть выполнен до тех пор, пока не закончится первый. Иначе запись не будет обновлена, а у Вас возникнут претензии к разработчикам СУБД. Это вкратце к вопросу о том, откуда в такой простейшей ситуации берутся очереди. Думаю, подробнее и глубже расскажут в профильном форуме. Кроме того, используемая методика измерения времени может лажать. Ведь от запроса не требуется возвращать никаких данных, кроме успешно/ошибка. А когда у СУБД будет достаточно данных, для формирования такого ответа? Если коротко, то много раньше окончания выполнения запроса. Может пригодится для размышления: Когда у меня впервые возникла необходимость в целях оптимизации сделать временной профиль выполнения ХП (вызывалась запросом CALL() через PDO) с несколькими различной "тяжелости" запросами внутри и с несколькими возвращаемыми рекордсетами в контексте пхпшного скрипта, неожиданно оказалось, что что сам вызов (запрос CALL) в пхпшном скрипте проходит очень быстро (какие-то миллисекунды, вроде), но в некоторые моменты очередную возвращаемую порцию данных от "тяжелого" запроса пхп-скрипт ожидает подолгу, сотни миллисекунд. В этом смысле измеренные временные промежутки заставили меня задуматься от том, что именно я измеряю в тот или иной момент. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 20:42 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Подумалось вот о чем. Конечно, если у Вас есть желание поэкспериментировать и разобраться. Добавьте в Ваш скрипт после инсерт/апдейта ещё один запрос - селект со значениями потенциально измененяемых полей записи для этого первичного ключа и выводом значений. Кроме того, можно в самом начале и в самом конце запросить у СУБД ещё и текущее врамя для сравнения его с пхпшным. Понимаю, что в таких опытах можно застрять по уши, но без детального анализа тут вряд ли можно получить готовый ответ о причинах ситуации. Если интересно, есть мысль о паре более страшных тестов :-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 20:55 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingпараллельно дёргать функцию, показывающую число записей в таблицеА как именно это делаете? Надеюсь, из консольного клиента mysql ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 20:56 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, В нашем случае практически исключена ситуация одновременного поступления двух запросов с одинаковыми полями (сейчас структура таблицы такова, что есть два поля, которые сами по себе не уникальны, но их комбинации в строке - да). miksoft, да, через консоль. Сейчас опять отправил 100 запросов за полторы секунды и вызывал пару раз в секунду count(*) в консоли, картина такая: mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 8 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 12 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 15 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 17 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 18 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 19 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 20 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 22 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 22 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 24 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 25 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 25 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 26 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 27 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 28 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 29 | +----------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) from `users_table` WHERE `tb_gid`='LOADTEST1'; +----------+ | COUNT(*) | +----------+ | 30 | +----------+ 1 row in set (0.00 sec) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 21:17 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingВ нашем случае практически исключена ситуация одновременного поступления двух запросов с одинаковыми полямиАга, только СУБД об этом не знает! )))) А если б и знала, то вряд ли поменяла алгоритм обработки запросов на желаемый Вами. Хотя, если убрать уникальный (он же праймари) индекс и реализовать уникальность поля дополнительным запросом... Но не уверен, это пробовать надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 21:27 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingвызывал пару раз в секунду count(*) в консолиДобавьте в запрос получение текущего времени, чтобы интервалы времени были понятны. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 21:28 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
miksoft, mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 11 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:00 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 16 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:02 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 18 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:03 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 21 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:05 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 25 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:06 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 29 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:07 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 32 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:09 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 36 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:10 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 38 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:11 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 40 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:12 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 42 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:13 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 44 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:14 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 45 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:15 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 48 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:16 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 51 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:17 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 53 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:18 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 54 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:19 | +---------------------+ 1 row in set (0.00 sec) mysql> SELECT COUNT(*) FROM `users_table` WHERE `tb_gid`="LOADTEST1"; SELECT NOW(); +----------+ | COUNT(*) | +----------+ | 57 | +----------+ 1 row in set (0.00 sec) +---------------------+ | NOW() | +---------------------+ | 2018-10-16 21:33:20 | +---------------------+ 1 row in set (0.00 sec) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 21:34 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Дичь какая-то... так быть не должно. Добавьте в скрипт, который вставляет записи, логирование в файл в моменты начала и конца скрипта с указанием времени (с долями секунд) и какого-нибудь идентификатора (PID или типа того, не знаю что есть в PHP), чтобы разные запуски скрипта друг от друга отличать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 21:39 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
miksoft, Лог 39 запросов, отправленных за ~0.5c: PID 29280, start time 1539716426.7522 PID 29280 connected at 1539716426.7525 PID 17201, start time 1539716435.044 PID 17201 connected at 1539716435.0444 PID 17201 query successfully ended at 1539716435.0452 PID 23306, start time 1539716435.2123 PID 23306 connected at 1539716435.2127 PID 23079, start time 1539716435.4447 PID 23079 connected at 1539716435.445 PID 1519, start time 1539716435.4854 PID 1519 connected at 1539716435.4858 PID 1519 query successfully ended at 1539716435.4864 PID 22242, start time 1539716435.6199 PID 22242 connected at 1539716435.6202 PID 1520, start time 1539716435.7779 PID 1520 connected at 1539716435.7782 PID 2154, start time 1539716435.9515 PID 2154 connected at 1539716435.9518 PID 21226, start time 1539716435.9527 PID 2154 query successfully ended at 1539716435.9528 PID 21226 connected at 1539716435.9529 PID 23307, start time 1539716436.0826 PID 23307 connected at 1539716436.083 PID 29280, start time 1539716436.2331 PID 29280 connected at 1539716436.2335 PID 29280 query successfully ended at 1539716436.234 PID 17201, start time 1539716436.3766 PID 17201 connected at 1539716436.3769 PID 23306, start time 1539716436.3911 PID 23306 connected at 1539716436.3915 PID 23079, start time 1539716436.5826 PID 23079 connected at 1539716436.5829 PID 23079 query successfully ended at 1539716436.5834 PID 1519, start time 1539716436.8674 PID 1519 connected at 1539716436.8678 PID 22242, start time 1539716436.981 PID 22242 connected at 1539716436.9814 PID 1520, start time 1539716437.17 PID 1520 connected at 1539716437.1703 PID 1520 query successfully ended at 1539716437.171 PID 2154, start time 1539716437.3192 PID 2154 connected at 1539716437.3196 PID 21226, start time 1539716437.4105 PID 21226 connected at 1539716437.411 PID 23307, start time 1539716437.56 PID 23307 connected at 1539716437.5604 PID 23307 query successfully ended at 1539716437.561 PID 29280, start time 1539716437.7036 PID 29280 connected at 1539716437.7041 PID 17201, start time 1539716437.7088 PID 17201 connected at 1539716437.7091 PID 23306, start time 1539716437.8488 PID 23306 connected at 1539716437.8491 PID 23306 query successfully ended at 1539716437.8498 PID 23079, start time 1539716437.9841 PID 23079 connected at 1539716437.9846 PID 1519, start time 1539716437.9924 PID 1519 connected at 1539716437.9927 PID 22242, start time 1539716438.1241 PID 22242 connected at 1539716438.1244 PID 22242 query successfully ended at 1539716438.125 PID 1520, start time 1539716438.2517 PID 1520 connected at 1539716438.252 PID 2154, start time 1539716438.2652 PID 2154 connected at 1539716438.2656 PID 21226, start time 1539716438.4812 PID 21226 connected at 1539716438.4817 PID 21226 query successfully ended at 1539716438.4821 PID 23307, start time 1539716438.5143 PID 23307 connected at 1539716438.5147 PID 29280, start time 1539716438.6191 PID 29280 connected at 1539716438.6195 PID 17201, start time 1539716438.7526 PID 17201 connected at 1539716438.753 PID 17201 query successfully ended at 1539716438.7538 PID 23306, start time 1539716438.8758 PID 23306 connected at 1539716438.8762 PID 23079, start time 1539716438.8909 PID 23079 connected at 1539716438.8913 PID 1519, start time 1539716439.0461 PID 1519 connected at 1539716439.0465 PID 1519 query successfully ended at 1539716439.0471 PID 22242, start time 1539716439.146 PID 22242 connected at 1539716439.1464 PID 1520, start time 1539716439.1939 PID 1520 connected at 1539716439.1943 PID 2154, start time 1539716439.334 PID 2154 connected at 1539716439.3344 PID 2154 query successfully ended at 1539716439.335 PID 21226, start time 1539716439.445 PID 21226 connected at 1539716439.4454 PID 23307, start time 1539716439.4789 PID 23307 connected at 1539716439.4793 PID 29280, start time 1539716439.6265 PID 29280 connected at 1539716439.6269 PID 29280 query successfully ended at 1539716439.6276 PID 17201, start time 1539716439.7121 PID 17201 connected at 1539716439.7126 PID 23306, start time 1539716439.7637 PID 23306 connected at 1539716439.7641 PID 23079, start time 1539716440.0621 PID 23079 connected at 1539716440.0625 PID 23079 query successfully ended at 1539716440.0631 PID 1519, start time 1539716440.2111 PID 1519 connected at 1539716440.2115 PID 22242, start time 1539716440.3511 PID 22242 connected at 1539716440.3515 PID 1520, start time 1539716440.5052 PID 1520 connected at 1539716440.5056 PID 1520 query successfully ended at 1539716440.5061 PID 2154, start time 1539716440.6368 PID 2154 connected at 1539716440.6372 PID 21226, start time 1539716440.646 PID 21226 connected at 1539716440.6464 PID 23307, start time 1539716440.7957 PID 23307 connected at 1539716440.796 PID 23307 query successfully ended at 1539716440.7967 PID 29280, start time 1539716440.9049 PID 29280 connected at 1539716440.9052 PID 17201, start time 1539716440.9385 PID 17201 connected at 1539716440.9388 PID 23306, start time 1539716441.1038 PID 23306 connected at 1539716441.1041 PID 23306 query successfully ended at 1539716441.1047 PID 23079, start time 1539716441.2346 PID 23079 connected at 1539716441.235 PID 1519, start time 1539716441.2476 PID 1519 connected at 1539716441.2479 PID 22242, start time 1539716441.4 PID 22242 connected at 1539716441.4004 PID 22242 query successfully ended at 1539716441.401 PID 1520, start time 1539716441.566 PID 1520 connected at 1539716441.5664 PID 2154, start time 1539716441.6172 PID 2154 connected at 1539716441.6175 PID 21226, start time 1539716441.7431 PID 21226 connected at 1539716441.7435 PID 21226 query successfully ended at 1539716441.7441 PID 29280, start time 1539716441.874 PID 23307, start time 1539716441.874 PID 29280 connected at 1539716441.8743 PID 23307 connected at 1539716441.8743 PID 17201, start time 1539716442.0127 PID 17201 connected at 1539716442.0131 PID 17201 query successfully ended at 1539716442.0137 PID 23306, start time 1539716442.1364 PID 23306 connected at 1539716442.1368 PID 23079, start time 1539716442.1512 PID 23079 connected at 1539716442.1515 PID 1519, start time 1539716442.3884 PID 1519 connected at 1539716442.3888 PID 1519 query successfully ended at 1539716442.3894 PID 22242, start time 1539716442.3931 PID 22242 connected at 1539716442.3934 PID 1520, start time 1539716442.5177 PID 1520 connected at 1539716442.518 PID 2154, start time 1539716442.646 PID 2154 connected at 1539716442.6465 PID 2154 query successfully ended at 1539716442.647 PID 21226, start time 1539716442.7659 PID 21226 connected at 1539716442.7663 PID 29280, start time 1539716442.7808 PID 29280 connected at 1539716442.7812 PID 23307, start time 1539716442.9044 PID 23307 connected at 1539716442.9047 PID 23307 query successfully ended at 1539716442.9052 PID 17201, start time 1539716443.0343 PID 17201 connected at 1539716443.0346 PID 23306, start time 1539716443.0494 PID 23306 connected at 1539716443.0498 PID 23079, start time 1539716443.1885 PID 23079 connected at 1539716443.1889 PID 23079 query successfully ended at 1539716443.1895 PID 1519, start time 1539716443.3081 PID 1519 connected at 1539716443.3084 PID 22242, start time 1539716443.3232 PID 22242 connected at 1539716443.3236 PID 1520, start time 1539716443.4575 PID 1520 connected at 1539716443.4578 PID 1520 query successfully ended at 1539716443.4584 PID 2154, start time 1539716443.5977 PID 2154 connected at 1539716443.5981 PID 21226, start time 1539716443.6714 PID 21226 connected at 1539716443.6718 PID 29280, start time 1539716443.8861 PID 29280 connected at 1539716443.8865 PID 29280 query successfully ended at 1539716443.8871 PID 23307, start time 1539716443.8989 PID 23307 connected at 1539716443.8992 PID 17201, start time 1539716444.0219 PID 17201 connected at 1539716444.0222 PID 23306, start time 1539716444.1668 PID 23306 connected at 1539716444.1672 PID 23306 query successfully ended at 1539716444.1679 PID 23079, start time 1539716444.2599 PID 23079 connected at 1539716444.2602 PID 1519, start time 1539716444.31 PID 1519 connected at 1539716444.3104 PID 22242, start time 1539716444.4414 PID 22242 connected at 1539716444.4418 PID 22242 query successfully ended at 1539716444.4424 PID 1520, start time 1539716444.9212 PID 1520 connected at 1539716444.9216 PID 2154, start time 1539716445.3391 PID 2154 connected at 1539716445.3395 PID 2154 query successfully ended at 1539716445.3409 PID 21226, start time 1539716445.4828 PID 21226 connected at 1539716445.4831 PID 29280, start time 1539716445.6461 PID 29280 connected at 1539716445.6466 PID 23307, start time 1539716446.0106 PID 23307 connected at 1539716446.011 PID 23307 query successfully ended at 1539716446.0116 PID 17201, start time 1539716446.1476 PID 17201 connected at 1539716446.1479 PID 23306, start time 1539716446.657 PID 23306 connected at 1539716446.6575 PID 23079, start time 1539716446.6712 PID 23079 connected at 1539716446.6715 PID 23079 query successfully ended at 1539716446.6721 PID 1519, start time 1539716446.8096 PID 1519 connected at 1539716446.81 PID 22242, start time 1539716446.9308 PID 22242 connected at 1539716446.9312 PID 1520, start time 1539716447.1816 PID 1520 connected at 1539716447.182 PID 1520 query successfully ended at 1539716447.1826 PID 2154, start time 1539716447.2011 PID 2154 connected at 1539716447.2015 PID 21226, start time 1539716447.3252 PID 21226 connected at 1539716447.3256 PID 29280, start time 1539716447.3338 PID 29280 connected at 1539716447.3342 PID 23307, start time 1539716447.5683 PID 23307 connected at 1539716447.5686 PID 23307 query successfully ended at 1539716447.5692 PID 17201, start time 1539716447.7054 PID 17201 connected at 1539716447.7058 PID 23306, start time 1539716447.8413 PID 23306 connected at 1539716447.8417 PID 23079, start time 1539716448.2261 PID 23079 connected at 1539716448.2265 PID 23079 query successfully ended at 1539716448.227 PID 1519, start time 1539716448.3593 PID 1519 connected at 1539716448.3596 PID 22242, start time 1539716448.4961 PID 22242 connected at 1539716448.4965 PID 1520, start time 1539716448.8571 PID 1520 connected at 1539716448.8575 PID 1520 query successfully ended at 1539716448.858 PID 2154, start time 1539716448.9431 PID 2154 connected at 1539716448.9434 PID 21226, start time 1539716448.9929 PID 21226 connected at 1539716448.9934 PID 29280, start time 1539716449.1301 PID 29280 connected at 1539716449.1305 PID 29280 query successfully ended at 1539716449.131 PID 23307, start time 1539716449.2635 PID 23307 connected at 1539716449.2639 PID 17201, start time 1539716449.3154 PID 17201 connected at 1539716449.3157 PID 23306, start time 1539716449.5901 PID 23306 connected at 1539716449.5905 PID 23306 query successfully ended at 1539716449.5911 PID 23079, start time 1539716449.7222 PID 23079 connected at 1539716449.7225 PID 1519, start time 1539716449.7743 PID 1519 connected at 1539716449.7747 PID 22242, start time 1539716449.9226 PID 22242 connected at 1539716449.923 PID 22242 query successfully ended at 1539716449.9235 PID 1520, start time 1539716450.0114 PID 1520 connected at 1539716450.0117 PID 2154, start time 1539716450.0718 PID 2154 connected at 1539716450.0722 PID 29280, start time 1539716461.9396 PID 29280 connected at 1539716461.9399 PID 23307, start time 1539716462.077 PID 23307 connected at 1539716462.0774 start time - начало скрипта, connected - сразу после подключения, query successfully ended - после $stmt->execute(). Что интересно, последний пункт записался далеко не у всех PID, однако, все записи добавились в таблицу без потерь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:06 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, А чего так неравномерно start time идут? Интервал колеблется от 0 до почти 12 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:20 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
miksoft, А вот этого я сразу и не заметил. Моя "атака" это отправка запросов через равный промежуток (доли секунды), т.е. между ними очень мало времени. Вот чуть более ровный лог, но всё равно сильный отрыв в конце: PID 23079, start time 1539718037.4256 PID 23079 connected at 1539718037.4259 PID 23307, start time 1539718037.5401 PID 23307 connected at 1539718037.5406 PID 29280, start time 1539718037.5478 PID 29280 connected at 1539718037.5482 PID 29280 query successfully ended at 1539718037.549 PID 1520, start time 1539718037.5639 PID 1520 connected at 1539718037.5642 PID 1520 query successfully ended at 1539718037.5648 PID 21226, start time 1539718037.5819 PID 21226 connected at 1539718037.5822 PID 21226 query successfully ended at 1539718037.5828 PID 22242, start time 1539718037.606 PID 22242 connected at 1539718037.6064 PID 22242 query successfully ended at 1539718037.6069 PID 1519, start time 1539718037.6109 PID 1519 connected at 1539718037.6111 PID 23306, start time 1539718037.6115 PID 23306 connected at 1539718037.6118 PID 2154, start time 1539718037.653 PID 2154 connected at 1539718037.6534 PID 2154 query successfully ended at 1539718037.6539 PID 17201, start time 1539718037.6592 PID 17201 connected at 1539718037.6596 PID 17201 query successfully ended at 1539718037.66 PID 23079, start time 1539718037.7174 PID 23079 connected at 1539718037.7178 PID 23307, start time 1539718037.7332 PID 23307 connected at 1539718037.7335 PID 23307 query successfully ended at 1539718037.734 PID 29280, start time 1539718037.7547 PID 29280 connected at 1539718037.7551 PID 29280 query successfully ended at 1539718037.7557 PID 1520, start time 1539718037.7614 PID 21226, start time 1539718037.7616 PID 1520 connected at 1539718037.7618 PID 21226 connected at 1539718037.7618 PID 22242, start time 1539718037.7623 PID 21226 query successfully ended at 1539718037.7626 PID 22242 connected at 1539718037.763 PID 22242 query successfully ended at 1539718037.7635 PID 1519, start time 1539718037.7669 PID 1519 connected at 1539718037.7672 PID 2154, start time 1539718037.7955 PID 23306, start time 1539718037.7955 PID 2154 connected at 1539718037.7959 PID 23306 connected at 1539718037.7959 PID 17201, start time 1539718037.8971 PID 17201 connected at 1539718037.8975 PID 23079, start time 1539718037.9335 PID 23307, start time 1539718037.9337 PID 23079 connected at 1539718037.9338 PID 23307 connected at 1539718037.9339 PID 29280, start time 1539718037.9342 PID 1520, start time 1539718037.9345 PID 23079 query successfully ended at 1539718037.9345 PID 1520 connected at 1539718037.9348 PID 29280 connected at 1539718037.935 PID 21226, start time 1539718037.9355 PID 22242, start time 1539718037.9384 PID 1519, start time 1539718037.9384 PID 29280 query successfully ended at 1539718037.9386 PID 22242 connected at 1539718037.9387 PID 1519 connected at 1539718037.9387 PID 21226 connected at 1539718037.9389 PID 22242 query successfully ended at 1539718037.9391 PID 21226 query successfully ended at 1539718037.9393 PID 23306, start time 1539718037.9396 PID 23306 connected at 1539718037.9398 PID 23306 query successfully ended at 1539718037.9401 PID 2154, start time 1539718038.072 PID 2154 connected at 1539718038.0725 PID 17201, start time 1539718038.0755 PID 17201 connected at 1539718038.0762 PID 23079, start time 1539718038.1031 PID 23079 connected at 1539718038.1035 PID 23079 query successfully ended at 1539718038.1041 PID 23307, start time 1539718038.1128 PID 23307 connected at 1539718038.1131 PID 29280, start time 1539718038.1154 PID 22242, start time 1539718038.1155 PID 22242 connected at 1539718038.1158 PID 22242 query successfully ended at 1539718038.1164 PID 1520, start time 1539718038.1165 PID 21226, start time 1539718038.1166 PID 29280 connected at 1539718038.1168 PID 21226 connected at 1539718038.1169 PID 1520 connected at 1539718038.118 PID 1520 query successfully ended at 1539718038.1185 PID 1519, start time 1539718038.2831 PID 1519 connected at 1539718038.2835 PID 1519 query successfully ended at 1539718038.2841 PID 2154, start time 1539718038.2854 PID 23306, start time 1539718038.2854 PID 17201, start time 1539718038.2856 PID 2154 connected at 1539718038.2857 PID 23306 connected at 1539718038.2858 PID 17201 connected at 1539718038.2858 PID 23306 query successfully ended at 1539718038.2864 PID 23079, start time 1539718038.2878 PID 23079 connected at 1539718038.288 PID 23079 query successfully ended at 1539718038.2884 PID 23307, start time 1539718038.2892 PID 22242, start time 1539718038.2902 PID 23307 connected at 1539718038.2904 PID 22242 connected at 1539718038.2936 PID 22242 query successfully ended at 1539718038.2941 PID 29280, start time 1539718038.4281 PID 29280 connected at 1539718038.4285 PID 21226, start time 1539718038.4582 PID 1520, start time 1539718038.4582 PID 1519, start time 1539718038.4584 PID 23306, start time 1539718038.4586 PID 1520 connected at 1539718038.4586 PID 23306 connected at 1539718038.4588 PID 2154, start time 1539718038.4591 PID 21226 connected at 1539718038.4594 PID 1519 connected at 1539718038.4599 PID 21226 query successfully ended at 1539718038.46 PID 2154 connected at 1539718038.4603 PID 17201, start time 1539718038.4603 PID 1519 query successfully ended at 1539718038.4604 PID 17201 connected at 1539718038.4605 PID 2154 query successfully ended at 1539718038.4609 PID 23307, start time 1539718038.464 PID 22242, start time 1539718038.4642 PID 23307 connected at 1539718038.4642 PID 22242 connected at 1539718038.4645 PID 23079, start time 1539718038.4646 PID 23307 query successfully ended at 1539718038.4647 PID 23079 connected at 1539718038.4648 PID 29280, start time 1539718038.4651 PID 23079 query successfully ended at 1539718038.4652 PID 29280 connected at 1539718038.4656 PID 23306, start time 1539718038.6381 PID 1520, start time 1539718038.6382 PID 1520 connected at 1539718038.6385 PID 23306 connected at 1539718038.6385 PID 1519, start time 1539718038.6389 PID 21226, start time 1539718038.639 PID 23306 query successfully ended at 1539718038.6391 PID 21226 connected at 1539718038.6393 PID 1519 connected at 1539718038.6396 PID 1519 query successfully ended at 1539718038.64 PID 2154, start time 1539718038.6401 PID 2154 connected at 1539718038.6404 PID 17201, start time 1539718038.6424 PID 17201 connected at 1539718038.6426 PID 23307, start time 1539718038.6429 PID 17201 query successfully ended at 1539718038.643 PID 23307 connected at 1539718038.6433 PID 22242, start time 1539718038.6465 PID 22242 connected at 1539718038.6486 PID 22242 query successfully ended at 1539718038.649 PID 23079, start time 1539718038.6522 PID 23079 connected at 1539718038.6524 PID 29280, start time 1539718038.6524 PID 29280 connected at 1539718038.6527 PID 29280 query successfully ended at 1539718038.6531 PID 23306, start time 1539718038.8162 PID 23306 connected at 1539718038.8165 PID 21226, start time 1539718038.8167 PID 1519, start time 1539718038.8168 PID 21226 connected at 1539718038.8169 PID 23306 query successfully ended at 1539718038.8171 PID 1520, start time 1539718038.8175 PID 1519 connected at 1539718038.8176 PID 2154, start time 1539718038.8179 PID 2154 connected at 1539718038.8181 PID 17201, start time 1539718038.8186 PID 17201 connected at 1539718038.8189 PID 1520 connected at 1539718038.819 PID 23306, start time 1539718038.8191 PID 23306 connected at 1539718038.8193 PID 1520 query successfully ended at 1539718038.8195 PID 17201 query successfully ended at 1539718038.8196 PID 23306 query successfully ended at 1539718038.8199 PID 22242, start time 1539718038.8217 PID 22242 connected at 1539718038.8219 PID 29280, start time 1539718038.9842 PID 21226, start time 1539718038.9845 PID 23079, start time 1539718038.9845 PID 29280 connected at 1539718038.9845 PID 23079 connected at 1539718038.9847 PID 29280 query successfully ended at 1539718038.9852 PID 21226 connected at 1539718038.9855 PID 23307, start time 1539718038.9856 PID 1519, start time 1539718038.9856 PID 23307 connected at 1539718038.9858 PID 1519 connected at 1539718038.9859 PID 21226 query successfully ended at 1539718038.9861 PID 23307 query successfully ended at 1539718038.9864 PID 17201, start time 1539718039.1245 PID 17201 connected at 1539718039.1249 PID 1520, start time 1539718039.1491 PID 2154, start time 1539718039.1493 PID 1520 connected at 1539718039.1494 PID 2154 connected at 1539718039.1495 PID 1520 query successfully ended at 1539718039.1501 PID 23306, start time 1539718039.1666 PID 29280, start time 1539718039.1674 PID 22242, start time 1539718039.1675 PID 23079, start time 1539718039.1676 PID 22242 connected at 1539718039.1677 PID 23079 connected at 1539718039.1678 PID 23307, start time 1539718039.1683 PID 29280 connected at 1539718039.1688 PID 23306 connected at 1539718039.1689 PID 23307 connected at 1539718039.1692 PID 21226, start time 1539718039.1693 PID 23306 query successfully ended at 1539718039.1694 PID 21226 connected at 1539718039.1695 PID 23307 query successfully ended at 1539718039.1697 PID 21226 query successfully ended at 1539718039.1703 PID 1519, start time 1539718039.3282 PID 17201, start time 1539718039.3284 PID 1520, start time 1539718039.3284 PID 1519 connected at 1539718039.3286 PID 17201 connected at 1539718039.3286 PID 1520 connected at 1539718039.3286 PID 2154, start time 1539718039.3288 PID 2154 connected at 1539718039.329 PID 17201 query successfully ended at 1539718039.3294 PID 1519 query successfully ended at 1539718039.3294 PID 22242, start time 1539718039.3339 PID 22242 connected at 1539718039.3341 PID 22242 query successfully ended at 1539718039.3346 PID 23079, start time 1539718039.335 PID 29280, start time 1539718039.3355 PID 23306, start time 1539718039.3355 PID 23079 connected at 1539718039.3358 PID 23307, start time 1539718039.3358 PID 23307 connected at 1539718039.336 PID 21226, start time 1539718039.3365 PID 22242, start time 1539718039.3366 PID 21226 connected at 1539718039.3367 PID 23306 connected at 1539718039.3368 PID 29280 connected at 1539718039.337 PID 22242 connected at 1539718039.3372 PID 23306 query successfully ended at 1539718039.3374 PID 29280 query successfully ended at 1539718039.3375 PID 22242 query successfully ended at 1539718039.3377 PID 1520, start time 1539718039.4731 PID 1520 connected at 1539718039.4735 PID 17201, start time 1539718039.5156 PID 17201 connected at 1539718039.516 PID 17201 query successfully ended at 1539718039.5167 PID 2154, start time 1539718039.5173 PID 2154 connected at 1539718039.5176 PID 1519, start time 1539718039.5222 PID 1519 connected at 1539718039.5224 PID 1519 query successfully ended at 1539718039.523 PID 23079, start time 1539718039.5234 PID 23079 connected at 1539718039.5236 PID 23307, start time 1539718039.5236 PID 23307 connected at 1539718039.5238 PID 23079 query successfully ended at 1539718039.5239 PID 29280, start time 1539718039.6955 PID 29280 connected at 1539718039.6959 PID 23306, start time 1539718039.6963 PID 23306 connected at 1539718039.6965 PID 29280 query successfully ended at 1539718039.6966 PID 21226, start time 1539718039.703 PID 21226 connected at 1539718039.7032 PID 22242, start time 1539718039.7034 PID 22242 connected at 1539718039.7036 PID 1520, start time 1539718039.7037 PID 21226 query successfully ended at 1539718039.7038 PID 17201, start time 1539718039.7039 PID 1520 connected at 1539718039.7041 PID 21226, start time 1539718039.7049 PID 2154, start time 1539718039.705 PID 17201 connected at 1539718039.705 PID 21226 connected at 1539718039.7054 PID 2154 connected at 1539718039.7054 PID 17201 query successfully ended at 1539718039.7055 PID 2154 query successfully ended at 1539718039.7059 PID 23079, start time 1539718039.7131 PID 23079 connected at 1539718039.7133 PID 23307, start time 1539718039.8778 PID 23307 connected at 1539718039.8781 PID 29280, start time 1539718039.8785 PID 23307 query successfully ended at 1539718039.8787 PID 29280 connected at 1539718039.8787 PID 23306, start time 1539718039.8863 PID 23306 connected at 1539718039.8865 PID 1519, start time 1539718039.8866 PID 1519 connected at 1539718039.8868 PID 22242, start time 1539718039.8869 PID 23306 query successfully ended at 1539718039.8871 PID 22242 connected at 1539718039.8871 PID 1520, start time 1539718039.8879 PID 1520 connected at 1539718039.8887 PID 17201, start time 1539718039.8888 PID 21226, start time 1539718039.8888 PID 2154, start time 1539718039.8897 PID 21226 connected at 1539718039.8899 PID 23307, start time 1539718039.8901 PID 2154 connected at 1539718039.8901 PID 23079, start time 1539718039.8904 PID 21226 query successfully ended at 1539718039.8904 PID 23079 connected at 1539718039.8907 PID 23307 connected at 1539718039.8908 PID 17201 connected at 1539718039.8908 PID 23079 query successfully ended at 1539718039.8911 PID 23307 query successfully ended at 1539718039.8912 PID 17201 query successfully ended at 1539718039.8914 PID 29280, start time 1539718040.0275 PID 29280 connected at 1539718040.0279 PID 1519, start time 1539718040.0776 PID 23306, start time 1539718040.0777 PID 1520, start time 1539718040.0779 PID 1519 connected at 1539718040.0779 PID 23306 connected at 1539718040.078 PID 1519 query successfully ended at 1539718040.0787 PID 23306 query successfully ended at 1539718040.0788 PID 22242, start time 1539718040.079 PID 22242 connected at 1539718040.0792 PID 21226, start time 1539718040.0803 PID 21226 connected at 1539718040.0806 PID 1520 connected at 1539718040.0808 PID 21226 query successfully ended at 1539718040.0811 PID 2154, start time 1539718040.0823 PID 2154 connected at 1539718040.0825 PID 23079, start time 1539718040.237 PID 17201, start time 1539718040.2372 PID 17201 connected at 1539718040.2374 PID 23307, start time 1539718040.2375 PID 23307 connected at 1539718040.2377 PID 17201 query successfully ended at 1539718040.2381 PID 23306, start time 1539718040.2381 PID 29280, start time 1539718040.2382 PID 23079 connected at 1539718040.2383 PID 29280 connected at 1539718040.2384 PID 23306 connected at 1539718040.2388 PID 23079 query successfully ended at 1539718040.2388 PID 1519, start time 1539718040.2404 PID 1519 connected at 1539718040.2406 PID 1519 query successfully ended at 1539718040.2409 PID 22242, start time 1539718040.4185 PID 22242 connected at 1539718040.4188 PID 21226, start time 1539718040.4189 PID 1520, start time 1539718040.4196 PID 1520 connected at 1539718040.4199 PID 2154, start time 1539718040.4201 PID 17201, start time 1539718040.4202 PID 23079, start time 1539718040.4211 PID 23307, start time 1539718040.4212 PID 29280, start time 1539718040.4213 PID 17201 connected at 1539718040.4214 PID 23306, start time 1539718040.422 PID 22242 query successfully ended at 1539718040.422 PID 23307 connected at 1539718040.4225 PID 29280 connected at 1539718040.4227 PID 23306 connected at 1539718040.423 PID 23307 query successfully ended at 1539718040.423 PID 23079 connected at 1539718040.4233 PID 29280 query successfully ended at 1539718040.4233 PID 23306 query successfully ended at 1539718040.4234 PID 2154 connected at 1539718040.4238 PID 21226 connected at 1539718040.4238 PID 1519, start time 1539718040.4249 PID 1519 connected at 1539718040.4251 PID 1519 query successfully ended at 1539718040.4256 PID 17201, start time 1539718040.4261 PID 17201 connected at 1539718040.4264 PID 17201 query successfully ended at 1539718040.427 PID 22242, start time 1539718040.568 PID 22242 connected at 1539718040.5684 PID 1520, start time 1539718040.6277 PID 1520 connected at 1539718040.6281 PID 23307, start time 1539718040.6285 PID 23306, start time 1539718040.6287 PID 1520 query successfully ended at 1539718040.6287 PID 29280, start time 1539718040.6287 PID 2154, start time 1539718040.6299 PID 1519, start time 1539718040.63 PID 29280 connected at 1539718040.6301 PID 17201, start time 1539718040.6302 PID 21226, start time 1539718040.6302 PID 23079, start time 1539718040.631 PID 22242, start time 1539718040.631 PID 1520, start time 1539718040.6311 PID 17201 connected at 1539718040.6312 PID 23307 connected at 1539718040.6313 PID 1519 connected at 1539718040.6314 PID 29280, start time 1539718040.632 PID 22242 connected at 1539718040.6322 PID 23306 connected at 1539718040.6326 PID 23079 connected at 1539718040.6326 PID 21226 connected at 1539718040.6328 PID 2154 connected at 1539718040.6331 PID 29280 connected at 1539718040.6334 PID 1520 connected at 1539718040.6334 PID 23079 query successfully ended at 1539718040.6335 PID 23306 query successfully ended at 1539718040.6335 PID 21226 query successfully ended at 1539718040.6338 PID 29280 query successfully ended at 1539718040.6342 PID 2154 query successfully ended at 1539718040.6343 PID 17201, start time 1539718040.809 PID 17201 connected at 1539718040.8094 PID 17201 query successfully ended at 1539718040.8099 PID 23307, start time 1539718040.8107 PID 23079, start time 1539718040.8115 PID 1519, start time 1539718040.8115 PID 21226, start time 1539718040.8119 PID 21226 connected at 1539718040.8122 PID 23307 connected at 1539718040.8122 PID 22242, start time 1539718040.8125 PID 29280, start time 1539718040.8125 PID 29280 connected at 1539718040.8129 PID 1519 connected at 1539718040.813 PID 23306, start time 1539718040.8134 PID 1519 query successfully ended at 1539718040.814 PID 2154, start time 1539718040.8144 PID 2154 connected at 1539718040.8146 PID 23079 connected at 1539718040.8149 PID 22242 connected at 1539718040.815 PID 2154 query successfully ended at 1539718040.8151 PID 23079 query successfully ended at 1539718040.8153 PID 23306 connected at 1539718040.8154 PID 22242 query successfully ended at 1539718040.8155 PID 1520, start time 1539718040.9719 PID 17201, start time 1539718040.9719 PID 21226, start time 1539718040.9721 PID 1520 connected at 1539718040.9722 PID 17201 connected at 1539718040.9722 PID 17201 query successfully ended at 1539718040.9729 PID 1519, start time 1539718040.9734 PID 23307, start time 1539718040.9736 PID 21226 connected at 1539718040.9737 PID 1519 connected at 1539718040.9738 PID 23307 connected at 1539718040.9738 PID 1519 query successfully ended at 1539718040.9745 PID 29280, start time 1539718074.7701 PID 29280 connected at 1539718074.7705 PID 2154, start time 1539718075.6762 PID 2154 connected at 1539718075.6765 PID 23079, start time 1539718076.5378 PID 23079 connected at 1539718076.5381 PID 22242, start time 1539718077.4256 PID 22242 connected at 1539718077.4259 PID 17201, start time 1539718081.415 PID 17201 connected at 1539718081.4153 PID 1520, start time 1539718081.5527 PID 1520 connected at 1539718081.553 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:29 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, PID - это какого процесса? Он повторяется неоднократно, а в приведенном в первом посту коде циклов не видать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:34 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Я имел в виду, что дёргаю url со скриптом в цикле ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:38 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Тут ещё и вебсервер в доле... Грязновато выходит. Отсутствие третьей строчки "query successfully ended" - не результат какого-то таймаута (1 - ожидание клиентом ответа от вебсервера и 2 - ожидание вебсервером ответа скрипта)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:44 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingдёргаю url со скриптом в циклеА в логах web-сервера что откладывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:47 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, query successfully ended идёт сразу перед echo результата клиенту. max_execution time 30, по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:48 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
При этом все вызовы получили положительный ответ (выдаваемый при успешном выполнении запроса) в консоли браузера. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:50 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Ну и куда эти "query successfully ended" подевались, кто их сожрал, если ответы успешные? Тут что-то совсем не так. Покажите скрипт дергалки и логи (access и error) вебсервера. И значения таймаутов в дергалке и в конфиге вебсервера. Или же, исключите урл-дергалку, вебсервер и браузер вовсе, сконцентрируйтесь только на PHP + MySQL. Вдогонку, max_execution_time - это максимальное время _работы_ пхп-скрипта без учета времени ожидания от внешних ресурсов, сна и т.п. Здесь скрипт простенький, едвали его время работы перевалит за несколько микросекунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 22:57 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Сейчас выяснилось, что на скорость запроса влияло параллельное выполнение двух других (одна выбирает из той же таблицы один результат по uid и gid, другая выбирает 100 самых свежих по gid), но они выполнялись с приемлемой скоростью. Их отключение позволило увеличить скорость функции вставки до ~50/сек, но в рабочем режиме эти три функции вызываются от множества юзеров, причём сама вставка чуть реже чтения результатов (которая всегда вызывается в начале сессии). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 23:28 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingИх отключение позволило увеличить скорость функции вставки до ~50/секЭто с примерно 5/сек, в десять раз? И без них означенные 7500 записей уходят в таблицу за положенные 2,5 минуты? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 23:44 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Сейчас загнал 1000 записей, дёргая урл 60 раз в секунду, средняя скорость добавления без тех двух функций порядка 15-20 в сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2018, 23:55 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Интересу ради запилил тест. Далеко не идеальный, конечно, но уж как есть. Имеется файл с тестовыми данными, которые заносятся в таблицу поодиночке. Часть данных имеет дубликаты в ключевом поле, таких 10%. Для вставки каждой записи инициируется отдельный процесс PHP. В этом есть некоторая аналогия с вебсервером. Весьма приблизительная, конечно, но вполне соответствующая режиму CGI, который в чистом виде нынче практически не используется применительно к PHP. Нагрузку на проц, конечно, дает ощутить, и даже немного больше, чем на реальном вебсервере :-) В процессе записи периодически запрашивается текущее количество строк в таблице. Зная расположение дубликатов в исходном файле, легко оценить ожидаемое количество строк. Эти запросы должны происходить гипотетически через каждую секунду (вычисленное время), но из-за ограниченности ресурсов компа в реальности получаются реже. В выводе скрипта main.php в самом начале текущие настройки, потом в три столбика идут номер итерации, кол-во записей, время от предыдущей итерации. По результатам. 1. На далеко не новом домашнем компе (СУБД MariaDB, PHP 5.6) уже при предполагаемых 50 з/с проц заметно не справляется, хотя, при 10 з/с усе прекрасно. А вот при 120 вместо одной расчетной секунды пилит тест пять секунд, ну и отставание факта от плана в таблице то ещё... В общем, на значениях свыше 25 тест повален, похоже, по нехватке ресурсов. 2. На более-менее приличном сервере о 12 ядрах и много памяти (СУБД MySQL 5.6, PHP 7.1) на предполагаемые 200 запросов (в секунду) уходит около 1,3 сек и отставание фактического от планового кол-ва записей исчисляется единицами (видимо, работающие в фоне дочерние процессы к моменту измерения не успели выполнить запись), а вот при 400 з/с уже наблюдается весьма заметное (десятки записей) отставание и сказывается нехватка ресурсов. Ещё раз подчеркну: тест весьма дубовый. Конфиг в init.php ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 02:27 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Продолжение теста. Если процессы не плодить и все запросы выполнить синхронно в одном цикле. Тут хорошо видна зависимость от движка таблицы, но зависимость от ресурсов незначительна. На сервере Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
На домашнем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 07:39 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
на сколько я помню в mysql по дефолтну весьма избыточный уровень изоляции транзакций включен (serializable) что если переключить в другой, например read committed ? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 09:42 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
innodb pool buffer size увеличить еще можно, раз чтение затыкается. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 09:44 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hett, А смысл? На уровне MySQL проблем нет, запросы отрабатывают за доли миллисекунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 09:56 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Ага, интересная ситуация, когда в отдельных точках, проверяемых наугад, проблем нет, а в целом проблема есть. Наверно, самое время для более подробного описания конфигурации используемого ПО и, вероятно, железа. Думается, есть смысл поглядеть за изменением загрузки CPU, использованием памяти и топом процессов во время теста. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 10:34 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
да неее, давайте еще страниц 10 погадаем, потом посмотрим во что сервер упирается, если конечно ТС соизволит ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 11:02 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Сервер на Debian 7, 4 ядра (4G RAM), PHP 5.6.36. Мысли об апгрейде железа под нагрузки были, но есть ощущение, что первоочередная причина в оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 12:00 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Про ПО, его архитектуру и конфигурацию расскажите? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 12:27 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
уже спрашивал, но не видел, ответили или пропустили во время медленной вставки, что показывает htop, atop ? есть ли чрезмерная нагрузка на cpu, диск? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 12:31 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hett, В top такая картина. Нужные процессы выделены красным, видно, что они занимают 1-4% каждый. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 13:20 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Этот скриншот снят во время проблемного запуска? Тормоза ж при околонулевой нагрузке CPU. Либо сеть совсем дохлая (так понимаю, "урл дергается" по сети), либо дисковая подсистема никуда не торопится (мускулю периодически нужно ж сбрасывать данные на диск). Или, может быть, у вебсервера какое-то дурное ограничение на входящие подключения (тупо ставит http-запросы в очередь) но в таком случае секретная "дергалка" должна бы о неразумных таймаутах просигнализировать в логах, если это вообще логгируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 13:42 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Да, во время запуска. Единственное отличие от "тихого" режима – ядра начинают использоваться процента на 3. "Дохлая сеть" в смысле скорость передачи от меня на сервер? Был бы вероятен такой вариант, дабы интернет у меня имеет свойство барахлить, если бы ранее не были зафиксированы подобные тормоза у множества юзеров (сотни тысяч) с таймаутами порядка 10-20с и адские перегрузки с нередким крашем сервера. Но тогда ещё могла быть причина в плохой оптимизации таблиц (unique key – строка на 50 символов и отсутствие иных индексов, а там частый запрос был select с order by и limit), сейчас таблицы оптимизировали и тестируем перед релизом всю эту систему. Таймауты в дёргалке (в консоли браузера после ответа от сервера) варьируются от 0.2 до 1.5с, но думаю, тут можно учесть скорость соединения и подвисание браузера при множестве запросов. Про скорость дисков и количество запросов, каким образом можно увеличить эти параметры или посмотреть максимально возможные? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 14:08 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
а диск? atop можете показать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 14:32 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hett, atop, сверху до "атаки", снизу во время, нужный процесс выделен красным. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 14:50 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Ух... Ужас, сколько неучтенных и слабо контролируемых факторов. Предлагаю во второй раз сузить область тестирования до PHP + MySQL. Локально. Запуск всех тестов исключительно из консоли сервера. В качестве примера можете попробовать мои туповатые тесты с постов предыдущей страницы. Модифицируйте по собственному усмотрению. На сонном 4-ядернике 50...100 запросов в секунду в тесте main.php должны нормально так загрузить проц. Загрузка - это работа (хоть и не всегда производительная). Нет загрузки - нет работы. Если на локальных тестах в связке PHP + MySQL нормально будет, то расширить область тестирования на вебсервер. Опять же, локально, без всяких "барахлящих интернетов" и браузеров. Написать скриптик с curl'ом, циклически "дергающий урл" - дело нескольких минут. Curl умеет и множественные запросы, если что, но по мне так для более ровного распределения по времени и простоты логгирования проще запустить 5...10 отдельных процессов с выводом результатов в отдельные файлы или консоли. Таймаут курлу установите в одну секунду (или менее). В лог для начала - время обработки запроса, код ответа вебсервера, вывод скрипта по желанию. Если в локальных тестах обнаружатся заметные проблемы - следует искать их причины. По загрузке дискового ввода/вывода - утилита iotop есть. В принципе, в atop тоже видно, только переключаться надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 15:01 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Диска не влез или его не показывает в atop? (встречал такое на виртуалках kvm) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:07 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hett, Походу не показывает, у нас VDS. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:18 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Ну тогда есть очень высокая вероятноть, что по iops имеются ограничения. В них дело или нет, сказать точно сложно. Вы все же попробуйте повысить размер innodb-pool-buffer-size. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:37 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hettпопробуйте повысить размер innodb-pool-buffer-sizeА смысл его повышать, если там данных с гулькин нос? Тормоза ж при таблице в сотню записей, она даже на мегабайт не тянет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:59 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Hett, innodb_pool_buffer_size уже 3G при четырёх гигах оперативы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 18:54 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Посмотрел ваши тесты, провёл аналогичные на локалке со своей таблицей. Скорость не поменялась, всё те же 3-5 записей в секунду. Т.е. скорее всего, повысить можно лишь через обновление ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 19:52 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, Простой тест one.php тоже показал низкую производительность или, хотя бы, тысячу запросов прогнал в приемлемое время? Это простейший тест, он не должен тормозить при мало-мальски исправном железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 20:10 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingу нас VDSА не тут ли собака порылась? Если самый низкий тарифный план или плохо настроена изоляция между клиентами, то можно любых просадок производительности ожидать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 20:19 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, А, у Вас же виртуалка... На виртуалку могут всяких ограничений понавешать - и на проц, и на диск... Там запросто подобное может пойти в десять раз хуже. Поинтересуйтесь у хостера, не навалял ли он каких-то дурных ограничений. А то мож там ядер то четыре, да по 500 МГц каждое в эквиваленте. Дисковая подсистема хост-машины тоже может быть чем-то перегружена и покажет производительность на уровне дерьмовой флешки, она же не в Вашем личном распоряжении. Найдите на битриксяческом сайте тестовый скрипт, предназначенный для проверки сервера перед установкой Битрикса. Называется bx_server_test.php или как-то так. Там есть простые тесты и для СУБД и для ФС. На остальные можете не обращать внимания. Для Вашего случая результаты тестов должны быть на "отлично". Если это не так, попробуйте потребовать объяснений у хостера. По крайней мере, оный скрипт является официальным и Вам будет на что сослаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 20:25 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkleПо крайней мере, оный скрипт является официальным и Вам будет на что сослаться.Это если тариф официально заявлен как совместимый с Битриксом. В иных случаях это вряд ли получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 21:11 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
Но я все равно предложил бы не бросать исследования и продолжить, либо сокращая front (локальный curl вместо удаленного браузера), либо сокращая back (убрать из кода обращения к MySQL, заменить весь код одной строчкой с логированием и т.д.). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 21:14 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
vkle, Под тестом я имел в виду "запустить свой скрипт на локалке (xampp, т.е. другая конфигурация сервера) и посмотреть на скорость добавления в локальную же таблицу". По вашему тесту выходят аналогичные результаты, только ещё ругается на превышение максимального времени работы скрипта. Тест Битрикса показал отличные результаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 21:27 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
miksoftvkleПо крайней мере, оный скрипт является официальным и Вам будет на что сослаться.Это если тариф официально заявлен как совместимый с Битриксом. В иных случаях это вряд ли получится.Ну как мыслю. Битриксу нужен достаточно высокопроизводительный сервер. Иначе он в тестах покажет "сайт работает медленно". Да и владелец сайта с посетителями будут не вполне довольны. Под рассматриваемую задачу, в том виде как она сейчас поставлена и реализована, нужен высокопроизводительный сервер. Всё же, 50 http-запросов в секунду, пусть даже и относительно простых, легко могут поставить сервер колом при "грамотном" подходе. На битриксяческие тарифы, во всяком случае, можно как-то ориентироваться в плане производительности. Если тариф заведомо существенно худший - ну тут понятно, ошибка выбора тарифа - тогда претензий и быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 22:23 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingПо вашему тесту выходят аналогичные результатыОпять темните... По которому из двух и при каком режиме... чего и сколько показал? Ну ей Богу, как партизан на допросе. gpbetatestingТест Битрикса показал отличные результаты.Отлично, что и требовалось для подтверждения! Мускуль и ПХП работают нормально, ФС тоже, стало быть. Выходит, означенная в топике проблема более-менее признанным тестовым скриптом и близко не подтвержена. Тем не менее, тормоза как-то фиксируются и они где-то в чем-то другом. В первом приближении остаются два варианта. Либо методика тестирования или её реализация не вполне корректна. Увы и ах, про нее мы знаем примерно как "что-то там в притормаживающем браузере, работающее через глючной инет". Ни подробным описанием, ни конфигурацией, увы, не располагаем. Логами - тоже. Ещё и время ответа (?) сервера перепутано с таймаутом, ну да и черт с ним. Либо проблемы на вебсервере, который тоже может ограничивать количество одновременно обрабатываемых запросов. Тип и конфигурация вебсервера являются секретными. А, нет, уже не совсем секретными - в слове xampp наконец то промелькнул Апач! Фиг знает, как сконфигурированный. Нужен ли этот монстрик под означенную задачу - тоже вопрос. А, nginx вроде ещё мелькал в топе... Ну, два вебсервера тут явно перебор. Тут были скриншоты топа на сервере, где хорошо видно большое количество отдыхающих пхпшных процессов, которые вебсервер обычно держит в запасе для немедленного обслуживания запросов. Дык, может и запросов то столько нет, обрабатывать нечего... В смысле, фактически запросы не сыпются на сервер со скоростью 50 штук в секунду, а капают неспешно на четыре красным замалеванных процесса. Так или иначе, логи вебсервера никто не видел. По хорошему, надо бы сложить логи "дергалки", логи вебсервера и логи пхпшного скрипта. Притом, в URL следует ввести уникальную отметку запроса, чтобы можно было отследить путь и время каждого из них в логе, вплоть до конкретной записи в таблице, куда можно добавить поле типа DATATIME и заносить текущую отметку времени по NOW(). Так вот как-то можно пытаться что-то понять... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 23:07 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
авторОтлично, что и требовалось для подтверждения! Мускуль и ПХП работают нормально, ФС тоже, стало быть Не известно что там битрикс тестирует. Может узкое место - это запись на диск, которую он и не тестирует вовсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 09:10 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
HettНе известно что там битрикс тестирует.Что мешает открыть скрипт и посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 10:30 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatesting, чем дело кончилось, не томи... зы > Лог 39 запросов, отправленных за ~0.5c: в логе мелькает около 10 пидов, не густо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2018, 19:08 |
|
PHP+MySQL: тормозит добавление записи в таблицу
|
|||
---|---|---|---|
#18+
gpbetatestingСейчас выяснилось, что на скорость запроса влияло параллельное выполнение двух других (одна выбирает из той же таблицы один результат по uid и gid, другая выбирает 100 самых свежих по gid), но они выполнялись с приемлемой скоростью. Их отключение позволило увеличить скорость функции вставки до ~50/сек, но в рабочем режиме эти три функции вызываются от множества юзеров, причём сама вставка чуть реже чтения результатов (которая всегда вызывается в начале сессии). показываем вывод show create table users_table; ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 11:42 |
|
|
start [/forum/topic.php?all=1&fid=23&tid=1460104]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
others: | 341ms |
total: | 514ms |
0 / 0 |