mysql otomatis menyesuaikan nilai koneksi maks

11

Saya telah mengatur koneksi maks ke sekitar 2000 di file my.cnf.

max_connections=2048

Saya telah meningkatkan ke 5.5.20 dan sekarang saya melihat baris berikut di log kesalahan.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Mengapa mysql mengubah nilai koneksi maks ke 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

File lunak dan keras yang terbuka dibatasi oleh OS adalah 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

Jumlah koneksi maks yang benar-benar digunakan:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+
shantanuo
sumber
1
Coba atur file terbuka ulimit lebih tinggi, seperti 4096.ulimit -n 4096
Apakah perilakunya berubah? Saya memiliki versi 5.0.77 dan saya tidak melihat masalah ini. Hanya ketika saya meningkatkan ke 5.5.20 saya memiliki nilai yang berubah!
shantanuo
1
Hanya akan menanyakan yang sudah jelas. Sudahkah Anda mengonfirmasi bahwa peningkatan tersebut tidak mengubah my.cnf Anda? Juga, OS apa? Apakah ini diinstal oleh manajer paket seperti yum? Jika demikian, paket mana?
Derek Downey

Jawaban:

5

Sepertinya tidak masalah bagi saya. Anda tidak dapat memiliki max_connections lebih besar dari itu, karena Anda open_files_limit terlalu rendah. Untuk setiap koneksi, MySQL membuka beberapa file. Coba lihat di sini .

Jadi, Anda harus meningkatkan batas file terbuka pada OS Anda, dan setelah itu, Anda dapat memberi nilai max_connections lebih tinggi.

Aleksandar Vucetic
sumber
5

Ini tampaknya menjadi masalah yang sama yang saya jawab di stackoverflow di sini , walaupun saya menggunakan CentOS 7 & MySQL 5.6.26

Anda perlu menaikkan batas file terbuka Anda baik untuk pengguna mysql (di limits.conf) dan untuk layanan mysql (dalam file mysql.service)

tambahkan dua baris ini ke /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

tambahkan baris ini ke /usr/lib/systemd/system/mysqld.service (di bagian [layanan])

LimitNOFILE=65535

kemudian akhirnya reboot dan periksa apakah pesan-pesan kesalahan itu telah hilang dari log kesalahan mysql Anda.

MNB
sumber
Solusi lainnya adalah: dba.stackexchange.com/questions/32987/…
Nav
@Nav - Yap, Anda tidak dapat menggunakan jumlah koneksi maksimum yang dikonfigurasi jika OS Anda tidak memungkinkan jumlah file yang sesuai untuk digunakan oleh mysqld
MNB
Juga, Ubuntu 15.04+ membutuhkan pendekatan yang berbeda: stackoverflow.com/questions/23977095/…
Nav
0

Tampaknya ada beberapa bug di mysqld baru. Saya memiliki masalah yang sama. Pengaturan max_connections menjadi 700 berhasil, tetapi jika saya atur ke 900, itu diatur ulang ke 214 saat startup. Jika ini adalah perubahan yang disengaja, maka itu akan menurunkannya ke 700 atau sesuatu yang serupa, nilai 214 tidak masuk akal.
Bagaimanapun, menaikkan batas deskriptor dengan ulimit -n memperbaiki masalah.

Bart K
sumber