Tối ưu hóa cài đặt MySQL - mysqld hết bộ nhớ


15

Tôi hơi bối rối về việc thay đổi cài đặt nào trong tệp my.conf của mình để tối ưu hóa cho máy chủ của mình (máy chủ mysql tiếp tục gặp sự cố do lưu lượng truy cập cao của chúng tôi).

Đây là tập tin my.cnf:

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

Và thông số kỹ thuật của máy chủ là:

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

Chạy Ubuntu 12.04 LTS

Đây là phân vùng của tôi:

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

Bất kì sự trợ giúp nào đều được đánh giá cao.

Nhìn vào nhật ký lỗi, tôi có thể thấy mysqld đã hết bộ nhớ:

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB

Câu trả lời:


10

Câu trả lời chung từ wiki máy chủ :

Bộ điều chỉnh MySQL Cài đặt mysqltuner

MySQL Tuner là một công cụ hữu ích sẽ kết nối với một phiên bản MySQL đang chạy và đưa ra các đề xuất về cách nó có thể được cấu hình tốt nhất cho khối lượng công việc của bạn. Máy chủ đã hoạt động càng lâu thì lời khuyên mà mysqltuner có thể cung cấp càng tốt. Trong môi trường sản xuất, hãy cân nhắc chờ ít nhất 24 giờ trước khi chạy công cụ. Bạn có thể nhận cài đặt mysqltuner từ kho Ubuntu:

sudo apt-get install mysqltuner

Sau đó, khi nó được cài đặt, hãy chạy nó:

 mysqltuner

và chờ báo cáo cuối cùng của nó. Phần trên cùng cung cấp thông tin chung về máy chủ cơ sở dữ liệu và phần dưới cùng cung cấp các đề xuất điều chỉnh để thay đổi trong my.cnf của bạn. Hầu hết trong số này có thể được thay đổi trực tiếp trên máy chủ mà không cần khởi động lại, hãy xem qua tài liệu chính thức của MySQL (liên kết trong phần Tài nguyên) để biết các biến có liên quan sẽ thay đổi trong sản xuất. Sau đây là một phần của báo cáo ví dụ từ cơ sở dữ liệu sản xuất cho thấy có thể có một số lợi ích từ việc tăng số lượng bộ đệm truy vấn:

-------- Khuyến nghị ----------------------------------------- ------------
Khuyến nghị chung:
    Chạy BẢNG TỐI ƯU để bảng chống phân mảnh để có hiệu suất tốt hơn
    Tăng dần bảng_cache để tránh giới hạn mô tả tệp
Các biến để điều chỉnh:
    key_buffer_size (> 1.4G)
    query_cache_size (> 32M)
    bảng_cache (> 64)
    innodb_buffer_pool_size (> = 22G)

Một nhận xét cuối cùng về điều chỉnh cơ sở dữ liệu: Trong khi chúng ta có thể nói rộng ra rằng các cài đặt nhất định là tốt nhất, hiệu suất có thể thay đổi từ ứng dụng này sang ứng dụng khác. Ví dụ, những gì hoạt động tốt nhất cho Wordpress có thể không phải là tốt nhất cho các ứng dụng Drupal, Joomla hoặc độc quyền. Hiệu suất phụ thuộc vào các loại truy vấn, sử dụng các chỉ mục, mức độ hiệu quả của thiết kế cơ sở dữ liệu, v.v. Bạn có thể thấy hữu ích khi dành thời gian tìm kiếm các mẹo điều chỉnh cơ sở dữ liệu dựa trên những ứng dụng bạn đang sử dụng. Khi bạn vượt qua một điểm nhất định, bất kỳ điều chỉnh nào bạn thực hiện sẽ chỉ dẫn đến những cải tiến nhỏ và bạn sẽ tốt hơn trong việc cải thiện ứng dụng hoặc xem xét mở rộng môi trường cơ sở dữ liệu của mình thông qua sử dụng phần cứng mạnh hơn hoặc bằng cách thêm máy chủ nô lệ.


  • Xem phần số liệu hiệu suất của báo cáo mysqltuner. Giữ bộ nhớ tối đa có thể dưới 50%.
  • tmp_table_size, max_heap_table_size variable: giữ cho những bằng nhau và cao.
  • join_buffer_size, tăng số lượng nhỏ; nó sẽ được nhân với max_connections.
  • innodb_buffer_pool_size. Làm cho nó cao.


0

Độ phân giải cho docker soạn

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

Cấu hình nội dung ./config/mysql/my.cnf

[mysqld]
performance_schema = off
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.