Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Падает mysql.  (Прочитано 1394 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Падает mysql.
« : 23 Сентября 2016, 19:56:54 »
Доброго времени суток!
У меня стоит mariadb 10.1, RAM 8G
Когда через PHP посылают большой POST запрос через PHP, то, у меня выключается mysql.
В логах ни чего не писалось. Только одно было замечено в логах.

key_buffer_size=536870912
read_buffer_size=2097152
max_used_connections=3
max_threads=602
thread_count=20
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 4235319 K  bytes of memory


Уже и не знаю, куда смотреть.
Эти значения менял на более низкие, да же в трое меньше ставил, все равно у меня выключается ДБ после запроса к ней.

Поставил на свою машину(домашнюю), там 12 оперативы и, когда вызываю этот большой запрос. То, в консоли браузера появляется:
POTS /путь/до/файла   500 (Internal Server Error)Это сообщение не появляется на сервере. Да и на домашнем компе, mysql не ложится, он просто не записывает ни чего в базу.
Везде одинаковая настройка, как mysql,apache2,nginx да же настройку sysctl.conf одинаковой сделал.
Подскажите, куда копать дальше?
Ubuntu 22.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #1 : 23 Сентября 2016, 20:48:09 »
Копать в сторону отладки своих скриптов. Запросы в базу сами не попадают.
Ни POST, ни GET.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: Падает mysql.
« Ответ #2 : 23 Сентября 2016, 20:53:59 »
Запросы я сам делаю.
В сервисе можно загружать контент(html+css), он потом помещается в базу данных, а потом выдается клиенту по запросу.
Ubuntu 22.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #3 : 23 Сентября 2016, 21:00:42 »
Ну вот займитесь отладкой своих запросов.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: Падает mysql.
« Ответ #4 : 24 Сентября 2016, 13:45:49 »
Проблема именно в настройках базы данных. Так, как при объединении строк в таблице, происходит выключение ее.
То, есть у нее не хватает памяти и она вырубается.
Подскажите на какие парамметры нужно обратить внимание?
(Нажмите, чтобы показать/скрыть)
Вот вся ошибка в развернутом виде.
« Последнее редактирование: 24 Сентября 2016, 14:49:52 от saifuddin »
Ubuntu 22.04

Оффлайн Sergiy17

  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
Re: Падает mysql.
« Ответ #5 : 24 Сентября 2016, 22:26:10 »
У меня была похожая проблема с нехваткой памяти, только тогда на сервере было 1024 Мб ОЗУ. Заменил InnoDB на MySIAM и отключил этот движок, все стало работать. Но может лучше посмотреть что занимает всю память.
Лучший способ в чём-то разобраться до конца — это попробовать научить этому компьютер." (с) Дональд Кнут

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #6 : 25 Сентября 2016, 23:06:57 »
Проблема именно в настройках базы данных.
Кто вам это сказал?…
key_buffer_size=536870912
read_buffer_size=2097152
max_used_connections=3
max_threads=602
thread_count=12
# bin/my-stats.sh
+------------------------------------------+--------------------+
|                          key_buffer_size |          16.000 MB |
|                         query_cache_size |          16.000 MB |
|                  innodb_buffer_pool_size |          32.000 MB |
|          innodb_additional_mem_pool_size |           8.000 MB |
|                   innodb_log_buffer_size |           8.000 MB |
+------------------------------------------+--------------------+
|                              BASE MEMORY |          80.000 MB |
+------------------------------------------+--------------------+
|                         sort_buffer_size |           2.000 MB |
|                         read_buffer_size |           0.125 MB |
|                     read_rnd_buffer_size |           0.250 MB |
|                         join_buffer_size |           0.500 MB |
|                             thread_stack |           0.188 MB |
|                        binlog_cache_size |           0.031 MB |
|                           tmp_table_size |           4.000 MB |
+------------------------------------------+--------------------+
|                    MEMORY PER CONNECTION |           7.094 MB |
+------------------------------------------+--------------------+
|                     Max_used_connections |                 50 |
|                          max_connections |                 60 |
+------------------------------------------+--------------------+
|                              TOTAL (MIN) |         434.688 MB |
|                              TOTAL (MAX) |         505.625 MB |
+------------------------------------------+--------------------+
И это сервер, раздающий семь сравнительно часто посещаемых сайтов. (До 300 уникальных посетителей в час в пиках… на каждый сайт.)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: Падает mysql.
« Ответ #7 : 26 Сентября 2016, 09:27:58 »
AnrDaemon, спасибо за ваш ответ.
Скажите, а какой средний размер страницы(сайта) помещался в БД? Все разносилось но разным ячейкам или хранилось в одной?
Да, и сколько оперативной памяти у вас было?

Пользователь добавил сообщение 26 Сентября 2016, 09:33:55:
Sergiy17, вероятнее всего ваш ответ самый правильный. Такой же ответ давали и на многих других английских сообществах. Для Innodb нужно много памяти, для работы с большими данными (при условии, что большой объем данных заносится в одну ячеку). Я эти ответы видел, но из-за того, что дата поста была в среднем между 2004-2009годами, я решил, что уже что-то изменилось и нашли другое решение. Видимо пока не нашли. Innodb очень хороша с не большими объемами данных (исключительно в одной ячейке в БВ) иначе нужно будет много оперативы, чтобы работало.

Пользователь добавил сообщение 26 Сентября 2016, 09:35:56:
Sergiy17, в моем случае, нужно будет делать проектирование, а именно, все хранить в Innodb, а те запросы, которые хранятся по несколько mb(в среднем это от 20-50mb), нужно будет выносить на другую базу данных где будет MySIAM
« Последнее редактирование: 26 Сентября 2016, 09:35:56 от saifuddin »
Ubuntu 22.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #8 : 26 Сентября 2016, 11:39:27 »
Страницы в БД не помещаются. Помещаются статьи. 100-200Кб. И почему было? Есть - 1Gb.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: Падает mysql.
« Ответ #9 : 26 Сентября 2016, 12:15:16 »
Видите, "Помещаются статьи. 100-200Кб" столько и меня помещается и работает, поместите в ячейку 3мб и попробуйте хотя бы select этого в браузере сделать, у вас выключится БД.
Ubuntu 22.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #10 : 26 Сентября 2016, 12:30:05 »
Во-первых, 3Mb не влезет ни в одну ячейку таблицы.
Во-вторых, загрузка 300-метрового дампа БД прошла без проблем. Неделю назад новый сайт подключали.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн saifuddin

  • Автор темы
  • Активист
  • *
  • Сообщений: 918
    • Просмотр профиля
Re: Падает mysql.
« Ответ #11 : 26 Сентября 2016, 13:44:29 »
Цитировать
A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 − 1) characters. The effective maximum length is less if the value contains multibyte characters. The effective maximum length of LONGTEXT columns also depends on the configured maximum packet size in the client/server protocol and available memory. Each LONGTEXT value is stored using a 4-byte length prefix that indicates the number of bytes in the value.

Пользователь добавил сообщение 26 Сентября 2016, 13:45:50:
Цитировать
Во-вторых, загрузка 300-метрового дампа БД прошла без проблем. Неделю назад новый сайт подключали.
Там все исчисляется в гигабайтах. И, да все проходит отлично.
Ubuntu 22.04

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Падает mysql.
« Ответ #12 : 26 Сентября 2016, 15:19:20 »
Ну вот и чините свои запросы. Положить можно любой сервер с любыми настройками.

Пользователь добавил сообщение 26 Сентября 2016, 15:22:15:
Да, если интересно, my-stats.sh
Код: (bash) [Выделить]
#!/bin/sh

/usr/bin/mysql --defaults-extra-file=/etc/mysql/debian.cnf -e "SHOW VARIABLES; SHOW STATUS;" | awk '
{
 VAR[$1]=$2
}
END {
 MAX_CONN = VAR["max_connections"]
 MAX_USED_CONN = VAR["Max_used_connections"]
 BASE_MEM=VAR["key_buffer_size"] + VAR["query_cache_size"] + VAR["innodb_buffer_pool_size"] + VAR["innodb_additional_mem_pool_size"] + VAR["innodb_log_buffer_size"]
 MEM_PER_CONN=VAR["read_buffer_size"] + VAR["read_rnd_buffer_size"] + VAR["sort_buffer_size"] + VAR["join_buffer_size"] + VAR["binlog_cache_size"] + VAR["thread_stack"] + VAR["tmp_table_size"]
 MEM_TOTAL_MIN=BASE_MEM + MEM_PER_CONN*MAX_USED_CONN
 MEM_TOTAL_MAX=BASE_MEM + MEM_PER_CONN*MAX_CONN

 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %15.3f MB |\n", "key_buffer_size", VAR["key_buffer_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "query_cache_size", VAR["query_cache_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "innodb_buffer_pool_size", VAR["innodb_buffer_pool_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "innodb_additional_mem_pool_size", VAR["innodb_additional_mem_pool_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "innodb_log_buffer_size", VAR["innodb_log_buffer_size"]/1048576
 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %15.3f MB |\n", "BASE MEMORY", BASE_MEM/1048576
 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %15.3f MB |\n", "sort_buffer_size", VAR["sort_buffer_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "read_buffer_size", VAR["read_buffer_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "read_rnd_buffer_size", VAR["read_rnd_buffer_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "join_buffer_size", VAR["join_buffer_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "thread_stack", VAR["thread_stack"]/1048576
 printf "| %40s | %15.3f MB |\n", "binlog_cache_size", VAR["binlog_cache_size"]/1048576
 printf "| %40s | %15.3f MB |\n", "tmp_table_size", VAR["tmp_table_size"]/1048576
 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %15.3f MB |\n", "MEMORY PER CONNECTION", MEM_PER_CONN/1048576
 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %18d |\n", "Max_used_connections", MAX_USED_CONN
 printf "| %40s | %18d |\n", "max_connections", MAX_CONN
 printf "+------------------------------------------+--------------------+\n"
 printf "| %40s | %15.3f MB |\n", "TOTAL (MIN)", MEM_TOTAL_MIN/1048576
 printf "| %40s | %15.3f MB |\n", "TOTAL (MAX)", MEM_TOTAL_MAX/1048576
 printf "+------------------------------------------+--------------------+\n"
}'
« Последнее редактирование: 26 Сентября 2016, 15:22:38 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.