Cara mengatur max_connections di mysql secara permanen

Server WordPress Terkelola memungkinkan untuk 24 koneksi bersamaan. Sayangnya nilai ini tidak dapat ditingkatkan. Jika Anda memerlukan layanan yang memerlukan koneksi tambahan, Anda mungkin ingin mempertimbangkan server VPS, karena itu akan memungkinkan Anda untuk memiliki nilai default lebih tinggi dari 100, dengan kemampuan untuk meningkatkan nilai lebih lanjut jika diinginkan.

Ringkasan

 

Jika Anda mendapatkan kesalahan Terlalu banyak koneksi saat Anda mencoba menyambung ke server mysqld, ini berarti bahwa semua koneksi yang tersedia sedang digunakan oleh klien lain. Jumlah koneksi yang diizinkan dikendalikan oleh variabel sistem max_connections. Nilai standarnya adalah 100. Jika Anda perlu mendukung lebih banyak koneksi, Anda harus menetapkan nilai yang lebih besar untuk variabel ini

MySQL SmartPool v. 2 untuk Grid hadir dengan 30 koneksi MySQL

Jika Anda mendapatkan kesalahan ________18______ saat mencoba menyambung ke

[mysqld]
local-infile=0
datadir=/var/lib/mysql
user=mysql
symbolic-links=0

max_connections = 100
0 server, this means that all available connections are in use by other clients.

Jumlah koneksi yang diizinkan dikendalikan oleh variabel sistem ________0______1 . Nilai standarnya adalah 100. Jika Anda perlu mendukung lebih banyak koneksi, Anda harus menetapkan nilai yang lebih besar untuk variabel ini.

Persyaratan

Sebelum Anda mulai, artikel ini memiliki dependensi berikut

  • Anda harus menyiapkan akses SSH untuk pengguna root atau sudo
    • Bagaimana cara mengaktifkan akses root ke DV saya?
    • Bagaimana cara menonaktifkan login SSH untuk pengguna root?

BACA SAYA TERLEBIH DAHULU
Artikel ini disediakan sebagai penghargaan. Menginstal, mengonfigurasi, dan mengatasi masalah aplikasi pihak ketiga tidak didukung oleh (mt) Media Temple. Silakan luangkan waktu untuk meninjau Pernyataan Dukungan.

Dukungan Lanjutan dapat membantu
Jika Anda mengalami masalah dengan langkah-langkah dalam artikel ini, bantuan tambahan tersedia melalui Dukungan Lanjutan, divisi layanan premium kami. Insinyur ahli kami dapat men-tweak dan menyetel server Anda untuk kinerja yang optimal. Untuk informasi selengkapnya tentang apa yang dapat dilakukan Dukungan Lanjutan untuk Anda, silakan klik di sini

Instruksi

Dimungkinkan untuk memutakhirkan koneksi MySQL Anda secara bersamaan dengan menambahkan MySQL GridContainer ke paket hosting Grid Anda. Tiga ukuran berbeda yang ditawarkan masing-masing adalah 60, 100, dan 150 koneksi bersamaan

Untuk informasi lebih lanjut tentang MySQL GridContainer, lihat halaman produk Grid kami

Untuk meningkatkan koneksi maksimum yang diizinkan MySQL, Anda harus mengedit file

[mysqld]
local-infile=0
datadir=/var/lib/mysql
user=mysql
symbolic-links=0

max_connections = 100
2. Sambungkan ke server melalui SSH sebagai pengguna root atau sudo, dan ketikkan ini

vi /etc/my.cnf

Akan ada bagian yang terlihat seperti ini. (mungkin sedikit berbeda)

[mysqld]
local-infile=0
datadir=/var/lib/mysql
user=mysql
symbolic-links=0

max_connections = 100

Di bawah [mysqld], Anda dapat meningkatkan koneksi maksimum MySQL Anda dengan mengubah atribut max_connections menjadi seperti ini


[mysqld]
safe-show-database
innodb_data_file_path=ibdata1:10M:autoextend
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

Tambahkan baris berikut di bawah [mysqld]

max_connections=250
_

File konfigurasi yang dihasilkan harus menyerupai ini

[mysqld]
safe-show-database
innodb_data_file_path=ibdata1:10M:autoextend
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max_connections=250

Simpan perubahan dan ketik berikut ini untuk me-restart mysqld

/etc/init.d/mysqld restart
_

Kamu akan lihat

Stopping mysql: [ OK ]
Starting mysql: [ OK ]
_

Jika berhenti GAGAL, ​​maka Anda melakukan kesalahan. Coba mundur dan pastikan Anda memasukkan pengaturan baru dengan benar

CATATAN

Jika Anda ingin memeriksa apakah setelan ini berhasil diterapkan, Anda dapat memeriksa menggunakan salah satu metode berikut

Saya ingin meningkatkan koneksi maksimal untuk Amazon Relational Database Service (Amazon RDS) saya untuk MySQL atau Amazon RDS untuk instans DB PostgreSQL

Resolusi

Lihat nilai max_connections saat ini

Di Amazon RDS for MySQL, metrik max_connections memantau jumlah maksimum yang ditetapkan (diizinkan) koneksi klien simultan

Secara default, parameter max_connections didasarkan pada rumus berikut di Amazon RDS for MySQL (dihitung dari nilai DBInstanceClassMemory)

max_connections = DBInstanceClassMemory/12582880

Untuk memeriksa nilai max_connections saat ini, jalankan perintah berikut setelah terhubung ke instans Amazon RDS for MySQL Anda

SHOW GLOBAL VARIABLES LIKE 'max_connections';

Di Amazon RDS for PostgreSQL, metrik max_connections memantau jumlah maksimum koneksi bersamaan yang ditetapkan. Secara default, parameter max_connections didasarkan pada rumus berikut di Amazon RDS untuk PostgreSQL (dihitung dari nilai DBInstanceClassMemory)

max_connections = LEAST({DBInstanceClassMemory/9531392}, 5000)

Untuk memeriksa nilai max_connections saat ini, jalankan perintah berikut setelah menyambungkan ke instans Amazon RDS for PostgreSQL Anda

postgres=> show max_connections;

Untuk RDS untuk MySQL dan RDS untuk PostgreSQL bergantung pada kelas instans yang digunakan oleh instans Amazon RDS. Kelas instans DB dengan lebih banyak memori yang tersedia mendukung lebih banyak koneksi database

Perhatikan bahwa jumlah max_connections default yang dihitung menggunakan rumus mungkin sedikit berbeda dari jumlah koneksi default yang dikembalikan dari perintah sebelumnya. Ini karena beberapa memori dari total DBInstanceClassMemory dicadangkan untuk operasi OS yang mendasarinya. Perintah sebelumnya hanya mempertimbangkan memori yang dicadangkan untuk mesin PostgreSQL dan bukan untuk OS host yang mendasarinya

Tinjau alasan untuk terlalu banyak koneksi

Saat jumlah koneksi klien melebihi nilai max_connections, Anda mendapatkan kesalahan yang serupa dengan berikut ini

Faktor berikut mungkin menyebabkan koneksi database Anda melebihi nilai max_connections

Peningkatan jumlah koneksi klien atau aplikasi ke instans DB. Hal ini disebabkan oleh peningkatan beban kerja atau penguncian tingkat tabel/baris

Menutup koneksi klien atau aplikasi dengan tidak benar setelah akhir operasi. Saat koneksi server tidak ditutup dengan benar, aplikasi klien membuka koneksi baru. Seiring waktu, koneksi server baru ini dapat menyebabkan instance Anda melebihi nilai max_connections. Untuk mencantumkan semua koneksi aktif untuk RDS Anda untuk instans DB MySQL, jalankan perintah berikut

Untuk melihat koneksi setiap database untuk instance RDS for PostgreSQL Anda, jalankan perintah berikut

SELECT datname, numbackends FROM pg_stat_database;

Koneksi tidur. Koneksi tidur yang juga dikenal sebagai koneksi terbuka tidak aktif disebabkan saat Anda menetapkan nilai yang lebih tinggi untuk parameter batas waktu koneksi, seperti wait_timeout atau interactive_timeout di MySQL. Jika Anda mengonfigurasi batas koneksi yang sangat tinggi, Anda mungkin berakhir dengan penggunaan memori yang lebih tinggi meskipun koneksi tersebut tidak digunakan. Akibatnya, saat server aplikasi mencoba membuka semua koneksi klien ke database, koneksi ini mungkin ditolak. Untuk mengakhiri koneksi tidur di RDS untuk instans DB MySQL, jalankan perintah berikut

CALL mysql.rds_kill(example-pid);

Koneksi menganggur. Anda dapat melihat koneksi yang menganggur dalam contoh RDS untuk PostgreSQL dengan menjalankan kueri berikut. Kueri ini menampilkan informasi tentang proses backend dengan salah satu status berikut selama lebih dari 15 menit. 'menganggur', 'menganggur dalam transaksi', 'menganggur dalam transaksi (dibatalkan)' dan 'dinonaktifkan'

SELECT * FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled')
AND state_change < current_timestamp - INTERVAL '15' MINUTE;

Untuk menghentikan koneksi tidak aktif dalam contoh RDS untuk PostgreSQL, jalankan perintah berikut

SELECT pg_terminate_backend(example-pid)

Tip. Ini adalah praktik terbaik untuk mengonfigurasi hanya koneksi aktif yang diperlukan untuk kinerja aplikasi. Anda juga dapat mempertimbangkan untuk meningkatkan ke kelas instans DB Amazon RDS yang lebih besar

Tingkatkan nilai max_connections

Anda dapat meningkatkan jumlah maksimum koneksi ke RDS untuk MySQL atau RDS untuk instans DB PostgresSQL menggunakan metode berikut

  • Tetapkan nilai yang lebih besar untuk parameter max_connections menggunakan grup parameter level instance khusus. Meningkatkan parameter max_connections tidak menyebabkan pemadaman apa pun. Meskipun Anda dapat meningkatkan nilai max_connections melebihi nilai default, ini bukanlah praktik terbaik. Ini karena, instance mungkin mengalami masalah saat beban kerja meningkat dan lebih banyak memori diperlukan. Peningkatan jumlah koneksi dapat meningkatkan penggunaan memori. Instance yang kehabisan memori mungkin macet. Ini benar terutama untuk kasus yang lebih kecil. Jika Anda meningkatkan nilai max_connections, pastikan untuk memantau penggunaan sumber daya. Juga, pastikan untuk berkonsultasi dengan DBA Anda tentang kenaikan tersebut. Ini adalah praktik terbaik untuk mempertahankan nilai default, atau meningkatkan ke kelas instance yang lebih besar saat diperlukan lebih banyak koneksi
  • Jika instans DB Anda menggunakan grup parameter default, ubah grup parameter menjadi grup parameter kustom. Pastikan untuk mengaitkan grup parameter DB khusus dengan instans Amazon RDS Anda dan reboot instans tersebut. Setelah grup parameter kustom baru diasosiasikan dengan instans DB Anda, Anda dapat mengubah nilai parameter max_connections. Untuk informasi selengkapnya, lihat Bagaimana cara mengubah nilai grup parameter DB Amazon RDS?
    Catatan. Mengubah grup parameter dapat menyebabkan pemadaman. Untuk informasi selengkapnya, lihat Bekerja dengan grup parameter DB
  • Tingkatkan instans DB Anda ke kelas instans DB dengan lebih banyak memori. Perhatikan bahwa peningkatan skala instans RDS berdampak pada penagihan akun. Untuk mempelajari selengkapnya, lihat penagihan instans DB untuk Amazon RDS
    Peringatan. Waktu henti terjadi saat Anda memodifikasi instans DB Amazon RDS

Ikuti praktik terbaik untuk mengonfigurasi parameter max_connections

Pastikan untuk mempertimbangkan praktik terbaik berikut saat bekerja dengan parameter max_connections untuk instans DB Anda

  • Batas koneksi default disetel untuk sistem yang menggunakan nilai default untuk konsumen memori utama lainnya, seperti buffer pool. Ini adalah praktik terbaik untuk meningkatkan kelas instance, daripada mengubah nilai kelas instance. Namun, jika instans Anda memiliki banyak memori kosong, Anda dapat mengubah parameter ini secara manual. Sebelum mengubah pengaturan ini untuk Instans DB Anda, pertimbangkan untuk menyesuaikan batas koneksi untuk memperhitungkan peningkatan atau penurunan memori yang tersedia pada instans DB
  • Tetapkan nilai max_connections menjadi sedikit lebih tinggi dari jumlah maksimum koneksi yang Anda harapkan untuk dibuka pada setiap instans DB
  • Untuk instance RDS untuk MySQL, jika Anda mengaktifkan Performance Schema, perhatikan baik-baik pengaturan parameter max_connections. Struktur memori Skema Kinerja diukur secara otomatis berdasarkan variabel konfigurasi server. Semakin tinggi Anda menyetel variabel, semakin banyak memori yang digunakan Skema Kinerja. Dalam kasus ekstrem, kondisi ini dapat menyebabkan masalah kehabisan memori pada jenis instans yang lebih kecil, seperti T2 dan T3. Jika Anda menggunakan Skema Kinerja, praktik terbaik adalah membiarkan pengaturan max_connections pada nilai default. Jika Anda berencana untuk meningkatkan nilai max_connections secara signifikan (menjadi lebih tinggi dari nilai default), maka pertimbangkan untuk menonaktifkan Skema Kinerja
    Catatan. Jika Anda mengaktifkan Performance Insights untuk Amazon RDS untuk instans DB MySQL, Skema Performa otomatis diaktifkan
  • Untuk instance RDS untuk MySQL, saat Anda menyetel parameter max_connections, pastikan untuk meninjau parameter terkait koneksi MySQL berikut. wait_timeout. Jumlah detik server menunggu aktivitas pada koneksi TCP/IP atau File Unix non-interaktif sebelum menutup koneksi
    waktu tunggu_interaktif. Jumlah detik server menunggu aktivitas pada koneksi interaktif sebelum menutup koneksi
    net_read_timeout. Jumlah detik untuk menunggu lebih banyak data dari koneksi TCP/IP sebelum menghentikan aktivitas baca
    net_write_timeout. Jumlah detik untuk menunggu koneksi TCP/IP untuk sebuah blok yang akan ditulis sebelum menghentikan aktivitas tulis
    max_execution_time. Batas waktu eksekusi untuk pernyataan SELECT, dalam milidetik
    max_connect_errors. Sebuah host diblokir dari koneksi selanjutnya jika ada lebih dari jumlah koneksi yang terputus ini
    max_user_connections. Jumlah maksimum koneksi simultan yang diizinkan ke akun MySQL mana pun
  • Untuk instance RDS untuk PostgreSQL, saat Anda menyetel parameter max_connections, pastikan juga meninjau parameter terkait koneksi PostgreSQL berikut
    idle_in_transaction_session_timeout. Hentikan sesi apa pun dengan transaksi terbuka yang telah menganggur lebih lama dari durasi yang ditentukan dalam milidetik. Ini memungkinkan setiap kunci yang ditahan oleh sesi itu untuk dilepaskan dan slot koneksi digunakan kembali. Selain itu, tupel yang hanya terlihat untuk transaksi ini akan dikosongkan
    tcp_keepalives_idle. Jumlah detik tidak aktif setelah sistem operasi mengirim pesan keepalive TCP ke klien
    tcp_keepalives_interval. Jumlah detik setelah pesan keepalive TCP yang tidak diakui oleh klien ditransmisikan lagi
    tcp_keepalives_count. Jumlah keepalives TCP yang dapat hilang sebelum koneksi server ke klien dianggap mati

Catatan. Artikel ini tidak menyertakan nilai yang disarankan untuk parameter yang tercantum karena nilai ini bervariasi berdasarkan kasus penggunaan Anda

Apa Max_connections default di MySQL?

Secara default 151 adalah jumlah maksimum koneksi klien simultan yang diizinkan di MySQL 5. 5. Jika Anda mencapai batas max_connections Anda akan mendapatkan kesalahan "Terlalu banyak koneksi" ketika Anda mencoba untuk terhubung ke server MySQL Anda. Ini berarti semua koneksi yang tersedia sedang digunakan oleh klien lain

Bagaimana cara mengatur koneksi maks dalam SQL?

Menggunakan SQL Server Management Studio . Di bawah Koneksi, dalam kotak Jumlah maksimum koneksi bersamaan, ketik atau pilih nilai dari 0 hingga 32767 untuk mengatur jumlah maksimum pengguna yang diizinkan untuk terhubung secara bersamaan ke contoh SQL Server. Mulai ulang SQL Server

Bagaimana cara mengatur Max_connections di MySQL tanpa restart?

Inilah perintah untuk memperbarui koneksi maks ke 200 melalui alat baris perintah MySQL tanpa memulai ulang. mysql> set global max_connections = 200; Perintah di atas akan meningkatkan koneksi maksimal tanpa restart tetapi setelah server di-restart, perubahan akan hilang.

Bagaimana cara memperbaiki terlalu banyak koneksi di MySQL?

Solusi .
Identifikasi nilai variabel max_connections. mysql --user="root" --password="PASSWORD" --execute='TAMPILKAN VARIABEL SEPERTI "max_connections";.
Gunakan editor teks favorit Anda untuk mengubah /etc/mysql/my. cnf dan tetapkan nilai berikut. max_connections = 500. .
Mulai ulang layanan MySQL dan untuk menerapkan perubahan