Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql Processlist, пълен със записи за сън, водещи до твърде много връзки?

По принцип получавате връзки в състояние на заспиване, когато:

  • PHP скрипт се свързва с MySQL
  • изпълнени са някои заявки
  • тогава PHP скриптът прави някои неща, които отнемат време
    • без прекъсване на връзката с БД
  • и накрая, PHP скриптът завършва
    • което означава, че прекъсва връзката с MySQL сървъра

Така че обикновено се оказвате с много процеси в състояние на заспиване, когато имате много PHP процеси, които остават свързани, без всъщност да правите нищо от страна на базата данни.

Основна идея, така че:уверете се, че нямате PHP процеси, които се изпълняват твърде дълго – или ги принудете да прекъснат връзката веднага щом вече не се нуждаят от достъп до базата данни.


Още нещо, което често виждам, когато има някакво натоварване на сървъра :

  • В Apache идват все повече заявки
    • което означава много страници за генериране
  • Всеки PHP скрипт, за да генерира страница, се свързва с DB и изпълнява някои заявки
  • Тези заявки отнемат все повече време, тъй като натоварването на DB сървъра се увеличава
  • Което означава, че повече процеси продължават да се натрупват

Решение, което може да помогне, е да намалите времето, което отнемат вашите заявки – оптимизиране на най-дългите.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql подреждане по, null първо и DESC след

  2. предаде параметри в съхранената процедура за вмъкване на заявка в laravel 4

  3. Защо не мога да вмъкна 10 цифри, когато колоната ми е INT(10)

  4. Преглед на новите функции за аналитичен прозорец в MySQL 8.0

  5. Как да направите инкрементално архивиране в Mysql