Tối ưu hóa nhân Linux nâng cao với sysctl

Cập nhật lần cuối: 25 tháng 2026
  • Việc tinh chỉnh nhân hệ điều hành nâng cao bằng sysctl cho phép bạn điều chỉnh mạng, bộ nhớ, tập tin và bộ lập lịch để tối đa hóa hiệu suất và độ ổn định.
  • Việc đo lường trước và sau khi thực hiện bằng các tiêu chuẩn so sánh và giám sát là điều cần thiết để xác nhận tác động thực sự của mỗi thay đổi.
  • Các cấu hình chuyên biệt (web, cơ sở dữ liệu, độ trễ thấp, Kubernetes) mang lại kết quả tốt hơn so với một cấu hình chung chung duy nhất.
  • Các công cụ như perf, ftrace, vmstat và iostat hỗ trợ tối ưu hóa dựa trên dữ liệu một cách lặp đi lặp lại, an toàn và khách quan.

tối ưu hóa nhân Linux nâng cao

Nếu bạn đã quản lý máy chủ Linux một thời gian, cuối cùng bạn sẽ nhận ra rằng sự khác biệt giữa một hệ thống tầm thường và một hệ thống hoạt động mượt mà dưới tải nặng nằm ở việc bạn đã tinh chỉnh nhân hệ điều hành tốt đến mức nào. Không chỉ đơn thuần là cài đặt thêm RAM hay CPU mạnh hơn: nhiều điểm nghẽn được giải quyết bằng cách điều chỉnh một vài tham số được lựa chọn cẩn thận.

Nhân hệ điều hành cung cấp hàng trăm tùy chọn về mạng, bộ nhớ, hệ thống tập tin và lập lịch tiến trình có thể được sửa đổi ngay lập tức. Với công cụ này, bạn có thể thực hiện điều đó. sysctl và một số điều chỉnh trong /procHoàn toàn có thể tận dụng tối đa phần cứng và đạt được kết quả mong muốn. Độ trễ thấp hơn, thông lượng cao hơn và độ ổn định tốt hơn. Điều này áp dụng cho máy chủ web và cơ sở dữ liệu, cũng như môi trường thời gian thực và Kubernetes. Tuy nhiên, điều cần thiết là phải biết chính xác bạn đang làm gì và cách đo lường nó.

sysctl là gì và nó tổ chức các tham số kernel như thế nào?

Tiện ích sysctl Đây là con đường cho phép thay đổi các tham số nhân hệ điều hành mà không cần biên dịch lại hoặc khởi động lại, cho phép... Đọc và sửa đổi các giá trị trong thời gian chạy để kiểm tra cấu hình ngay lập tức. Các tham số này được sắp xếp theo cấu trúc cây phân cấp thấp. /proc/sys/và mỗi thành phần điều khiển một hành vi cụ thể của hệ thống.

Các thiết lập được nhóm thành các danh mục riêng biệt, giúp bạn dễ dàng xác định chính xác những gì cần điều chỉnh khi gặp sự cố cụ thể về hiệu suất hoặc độ ổn định. Cấu trúc này cho phép bạn tập trung, ví dụ, chỉ vào mạng (net.*), bộ nhớ (vm.*) hoặc hệ thống tệp (fs.*) mà không bị lạc trong các tùy chọn nhân hệ điều hành khác.

Các danh mục chính mà bạn sẽ tìm thấy trong /proc/sys/ Những điều này bao gồm, trong số những điều khác:

  • nhân.*Các tùy chọn chung của nhân hệ điều hành (bộ lập lịch, PID, thông báo, NUMA, v.v.).
  • vm.*Quản lý bộ nhớ ảo, hoán đổi, bộ nhớ đệm và các chính sách vượt mức cấp phát.
  • mạng lưới.*: Ngăn xếp mạng IPv4/IPv6, bộ đệm TCP/UDP, hàng đợi, kiểm soát tắc nghẽn.
  • fs.*: giới hạn của các mô tả, inode, inotify, AIO và hành vi của VFS.
  • dev.*Các thông số cụ thể của một số thiết bị và trình điều khiển nhất định.

với sysctl -a Bạn có thể liệt kê tất cả các tham số có sẵn, và bằng các lệnh như... sysctl vm.swappiness o sysctl net.ipv4.tcp_tw_reuse đọc các giá trị cụ thể, điều này rất quan trọng. kiểm tra cấu hình hiện tại trước khi thay đổi bất cứ điều gì. Để tìm kiếm một thứ cụ thể, người ta thường sử dụng bộ lọc. grep, ví dụ: sysctl -a | grep tcp.

Việc điều chỉnh tham số ngay lập tức rất đơn giản, chỉ cần sử dụng... sysctl -w clave=valorTuy nhiên, điều quan trọng cần hiểu là những thay đổi này chỉ là tạm thời. Để lưu lại chúng sau khi khởi động lại, điều cần thiết là phải sao lưu cấu hình. /etc/sysctl.conf hoặc trong các tệp của /etc/sysctl.d/, thường sử dụng các tập tin được đánh số (ví dụ: 10-network.conf, 20-memory.conf, 99-custom.conf) xác định thứ tự áp dụng của chúng.

các tham số nhân Linux nâng cao

Đo lường trước khi hành động: tiêu chuẩn và thông số cơ bản của hệ thống.

Trước khi bắt đầu điều chỉnh các nút bấm, tốt nhất nên thiết lập một tiêu chuẩn hiệu suất khách quan . Nếu không có dữ liệu trước đó, không thể biết liệu những thay đổi đã cải thiện hay làm xấu đi hệ thống, và bạn sẽ rơi vào cái bẫy kinh điển "có vẻ tốt hơn đối với tôi", điều này không hữu ích cho việc đưa ra các quyết định đúng đắn.

Ở cấp độ toàn hệ thống, nên thu thập số liệu thống kê về CPU, tải, bộ nhớ, ổ đĩa và mạng trong vài phút dưới tải trọng đại diện. Các công cụ như... uptime, mpstat, vmstat, iostat -x o sar -n DEV Chúng cho phép bạn xem cách hoạt động của nhân hệ điều hành mặc định, lượng bộ nhớ ảo mà nó sử dụng, tốc độ phản hồi của I/O ổ đĩa và liệu mạng có bị quá tải hay lãng phí băng thông hay không.

Ngoài phần tổng quan đó, điều quan trọng là phải chạy các bài kiểm tra hiệu năng cụ thể cho ứng dụng mà bạn muốn tối ưu hóa. Trên máy chủ web, bạn có thể sử dụng ab (Apache Bench) hoặc các công cụ tương tự để đo lường số yêu cầu mỗi giây, độ trễ trung bình và lỗiTrong cơ sở dữ liệu, các tiện ích như mysqlslap o sysbench Chúng giúp đánh giá số lượng giao dịch mỗi giây và thời gian truy vấn.

Ví dụ, trong trường hợp không tinh chỉnh, người ta thường thấy các số liệu như 500 yêu cầu HTTP/giây với thời gian phản hồi trung bình 200 ms, khoảng 250 truy vấn SQL/giây với độ trễ 40 ms, tốc độ mạng xấp xỉ 500 Mbps và tải hệ thống gần đạt giới hạn khi chịu tải nặng. Những con số này sẽ được sử dụng để xác minh, sau khi áp dụng các thay đổi kernel, liệu có thực sự đạt được sự gia tăng đáng kể về thông lượng và giảm độ trễ hay không.

Cuối cùng, hãy ghi lại các lệnh và kết quả trước khi thực hiện bất kỳ thay đổi nào. Việc có lịch sử sẽ cho phép bạn so sánh chính xác các đợt điều chỉnh khác nhau và cũng giúp bạn phát hiện các lỗi sau khi cập nhật kernel hoặc sau khi đưa cấu hình sysctl mới vào môi trường sản xuất.

Cài đặt bộ nhớ nâng cao: vm.*

Điều chỉnh bộ nhớ nhân Linux

Bộ nhớ là một trong những hệ thống con mà các thay đổi trong nhân hệ điều hành dễ nhận thấy nhất. Một máy chủ có nhiều RAM nhưng được cấu hình kém có thể dẫn đến việc sử dụng không gian hoán đổi (swap space) một cách không cần thiết, gây ra... Tăng đột biến I/O và giảm hiệu năng đột ngộtĐó là lý do tại sao các tham số như vậy vm.swappinessTỷ lệ trang bị thay đổi hoặc hành vi bộ nhớ đệm VFS cũng quan trọng không kém.

Tham số vm.swappiness Tham số này kiểm soát số lượng trang bộ nhớ mà nhân hệ điều hành gửi đến bộ nhớ ảo (swap). Trong nhiều bản phân phối Linux, giá trị này được đặt là 60, một giá trị dành cho môi trường máy tính để bàn hỗn hợp. Đối với máy chủ cơ sở dữ liệu hoặc các ứng dụng có độ trễ thấp, thường nên giảm giá trị này xuống 10 hoặc thậm chí thấp hơn, dẫn đến hệ thống hoạt động hiệu quả hơn. Ưu tiên lưu trữ dữ liệu trong RAM và giảm thiểu việc trao đổi dữ liệu qua bộ nhớ ảo.Không phải là điều hiếm gặp khi thấy lưu lượng truy cập ổ đĩa giảm mạnh và các ứng dụng phản hồi mượt mà hơn sau khi điều chỉnh này.

  Hướng dẫn đầy đủ cách thiết lập máy chủ Valheim.

Một yếu tố cấu thành cơ bản khác là vm.dirty_ratio y vm.dirty_background_ratioCác giá trị này xác định tỷ lệ phần trăm bộ nhớ có thể được lấp đầy bởi các trang dữ liệu bẩn trước khi nhân hệ điều hành bắt đầu ghi chúng ra đĩa. Các giá trị quá cao có thể dẫn đến các đợt ghi dữ liệu lớn, gây ra độ trễ rất lớn cho tất cả các ứng dụng khi quá trình ghi diễn ra. Giảm các tỷ lệ phần trăm này xuống các con số như 15 và 5, tương ứng, thường dẫn đến một kết quả tốt hơn. Mô hình I/O nhất quán và dễ dự đoán hơn.

các thiết lập của vm.vfs_cache_pressure Tham số này xác định mức độ mạnh mẽ mà nhân hệ điều hành xóa bộ nhớ đệm inode và thư mục. Giá trị mặc định là 100 thường xóa bộ nhớ đệm nhanh chóng, trong khi các thiết lập xung quanh 50 cho phép giữ lại siêu dữ liệu lâu hơn, tăng tỷ lệ truy cập thành công cho các thao tác tệp và cải thiện hiệu suất. hiệu năng cảm nhận của hệ thống tệpĐây là yếu tố then chốt trong các máy chủ xử lý hàng triệu tập tin nhỏ.

Về phần mình, vm.min_free_kbytes Hãy dành một lượng bộ nhớ trống tối thiểu để đảm bảo hệ thống có thể đáp ứng các đợt cấp phát bộ nhớ đột ngột mà không gặp phải tình trạng quá tải (OOB). Việc dành khoảng 0,5% đến 1% tổng RAM thường là biện pháp an toàn hiệu quả để ngăn nhân hệ điều hành hết dung lượng bộ nhớ khi chịu tải cực lớn và bắt đầu tắt các tiến trình quan trọng, từ đó cải thiện hiệu suất. sự ổn định tổng thể của máy chủ.

Cuối cùng, chính sách cam kết vượt mức cũng đáng được chú ý: các tham số như... vm.overcommit_memory y vm.overcommit_ratio Chúng xác định lượng bộ nhớ ảo được phân bổ cho các tiến trình so với RAM và bộ nhớ ảo khả dụng. Trong một số trường hợp (ví dụ: với Redis hoặc một số cơ sở dữ liệu nhất định), việc phân bổ vượt mức một cách mạnh mẽ được cho phép, trong khi ở những trường hợp khác, chính sách thận trọng hơn được ưu tiên để hạn chế rủi ro. Lỗi hết bộ nhớ (OOM) và các tình huống bộ nhớ bị suy giảm nghiêm trọngĐể biết các kỹ thuật phân tích và chẩn đoán các trường hợp phức tạp, vui lòng tham khảo gỡ lỗi bộ nhớ trong Linux.

Tối ưu hóa mạng nâng cao: net.* và TCP/IP

Ngăn xếp mạng có lẽ là lĩnh vực mà việc tinh chỉnh mang lại hiệu quả rõ rệt nhất trong môi trường sản xuất. Một thay đổi đơn giản trong hàng đợi kết nối hoặc bộ đệm có thể tạo ra sự khác biệt giữa một máy chủ bị nghẽn ở tốc độ 500 Mbps và một máy chủ hoạt động trơn tru hơn. Nó dễ dàng đạt đến tốc độ gigabit tối đa.Các tham số dưới net.core.* y net.ipv4.* Trong lĩnh vực này, họ là những đồng minh tốt nhất của bạn.

Trước hết, kích thước bộ đệm socket ảnh hưởng trực tiếp đến thông lượng tối đa của kết nối, đặc biệt khi có độ trễ cao hoặc liên kết dung lượng lớn. Điều chỉnh net.core.rmem_max y net.core.wmem_max với các giá trị lớn (hàng chục hoặc hàng trăm megabyte) và xác định chính xác net.ipv4.tcp_rmem y net.ipv4.tcp_wmem (giá trị tối thiểu, giá trị mặc định và giá trị tối đa) cho phép mỗi socket có không gian cần thiết để giảm thiểu sự tắc nghẽn giao thông đột ngột. mà không rơi vào những hạn chế nhân tạo do các giá trị nhà máy rất bảo thủ đặt ra.

Một điểm quan trọng khác là kích thước của hàng đợi kết nối. Các tham số như... net.core.somaxconn, net.core.netdev_max_backlog y net.ipv4.tcp_max_syn_backlog Các giới hạn này xác định số lượng kết nối đang chờ xử lý mà hệ thống có thể xử lý trước khi làm mất gói dữ liệu hoặc từ chối quá trình bắt tay. Trên các máy chủ web có lưu lượng truy cập cao, việc tăng các giới hạn này có thể ngăn chặn tình trạng tắc nghẽn hàng đợi và giảm tải đáng kể. Lỗi kết nối trong thời gian tải cao điểm.

Hành vi của các kết nối TCP cũng có thể được tinh chỉnh với nhiều tùy chọn khác nhau: bật net.ipv4.tcp_window_scaling Để hỗ trợ cửa sổ lớn trên các liên kết băng thông cao, hãy bật tính năng này. net.ipv4.tcp_sack y net.ipv4.tcp_timestamps để cải thiện việc quản lý tổn thất và truyền tải lại, hoặc điều chỉnh net.ipv4.tcp_fin_timeout và việc quản lý TIME_WAIT (net.ipv4.tcp_tw_reuse, net.ipv4.tcp_max_tw_buckets) để kiểm soát mức tiêu thụ tài nguyên trên các máy chủ với hàng triệu kết nối ngắn mỗi phút.

Việc lựa chọn thuật toán kiểm soát tắc nghẽn cũng rất quan trọng. Mặc dù vậy, cubic Nó vẫn là giá trị mặc định trong nhiều bản phân phối; việc thay đổi thành bbr trong các nhân hệ điều hành hiện đại (4.9 trở lên) bởi net.ipv4.tcp_congestion_control y net.core.default_qdisc=fq Nó có thể tăng gấp nhiều lần thông lượng TCP trong môi trường có độ trễ hoặc mất gói phức tạp, đạt được hiệu quả cải thiện từ 2 đến 25 lần so với cấu hình cổ điển trong một số trường hợp nhất định, với chi phí là... hành vi có phần khác biệt trong mạng bị tắc nghẽn.

Chúng ta không được quên các thông số về an toàn và độ tin cậy như sau: net.ipv4.tcp_syncookiesviệc xử lý chuyển hướng (net.ipv4.conf.all.accept_redirects, send_redirects) hoặc lọc trong cầu nối (net.bridge.bridge-nf-call-iptables (trong môi trường Kubernetes). Khi được cấu hình đúng cách, chúng cho phép bạn bảo vệ hệ thống khỏi các cuộc tấn công phổ biến (SYN flood, giả mạo, v.v.) mà không làm giảm hiệu năng. hiệu suất mạng ổn địnhĐể có hướng dẫn thực tế về các quy tắc và cách phát hiện, hãy xem phần sau: Triển khai Netfilter và Suricata.

Hệ thống tập tin, bộ mô tả và giới hạn toàn cục: fs.* và ulimit

Trên các máy chủ hiện đại, giới hạn số lượng file descriptor thấp là nguyên nhân nhanh nhất khiến hệ thống bị sập trong giờ cao điểm. Khi máy chủ web, máy chủ proxy ngược hoặc cơ sở dữ liệu gặp lỗi "quá nhiều file đang mở" kinh điển, thường là do các tham số kernel và giới hạn người dùng không được điều chỉnh phù hợp với tải thực tế.

Ở cấp độ toàn cầu, fs.file-max Tham số này quy định tổng số lượng mô tả mà nhân hệ điều hành có thể mở. Đối với các ứng dụng có hàng nghìn kết nối đồng thời, người ta thường tăng giá trị này lên vài triệu, cùng với việc tăng... fs.nr_openĐiều này thiết lập mức trần cứng cho số lượng mô tả trên mỗi quy trình. Ngoài ra, cần có những điều chỉnh khác. /etc/security/limits.conf để người dùng (hoặc các dịch vụ được quản lý bởi systemd) có các giá trị mềm và cứng phù hợp với cấu hình hạt nhân.

  Fedora: Tính năng và chức năng

Hệ thống con inotify, được sử dụng rộng rãi bởi các IDE, công cụ phát triển web và hệ thống giám sát tập tin, được điều khiển bởi các tham số như... fs.inotify.max_user_watches y fs.inotify.max_user_instancesNếu bạn gặp lỗi liên quan đến các trình giám sát hoặc các tiến trình ngừng theo dõi thay đổi ổ đĩa, có lẽ bạn cần... Tăng các giới hạn này để tránh tình trạng tắc nghẽn ngầm..

Một tính năng quan trọng khác là I/O bất đồng bộ (AIO), với giá trị tối đa toàn cục được xác định bằng fs.aio-max-nrTrong các ứng dụng phụ thuộc nhiều vào I/O bất đồng bộ (một số công cụ cơ sở dữ liệu, hệ thống xếp hàng, v.v.), việc tăng số lượng này giúp ngăn chặn tình trạng nhân hệ điều hành hết chỗ cho các hoạt động AIO dưới tải yêu cầu khổng lồ.

Ngoài các thông số này, hiệu năng của hệ thống con đĩa còn bị ảnh hưởng bởi... Bộ lập lịch I/O được cấu hình trên từng thiết bị khối. Trong các hệ thống sử dụng SSD hoặc NVMe, thường nên sử dụng các bộ lập lịch nhẹ như... none o mq-deadlineTrong khi đó, đối với đĩa cơ học, các lựa chọn khác có thể hợp lý hơn, chẳng hạn như... bfq Tùy thuộc vào loại tải. Điều chỉnh bộ lập lịch thông qua /sys/block/<disco>/queue/scheduler và tinh chỉnh các tùy chọn như độ sâu hàng đợi (nr_requests) hoặc read_ahead_kb có thể tạo ra sự khác biệt đáng kể trong Độ trễ đọc/ghi và thông lượngCũng cần xem xét hệ thống tập tin và trình điều khiển nào đang được sử dụng; ví dụ, các bài viết về NTFSplus trên Linux và các hệ thống khác có thể hỗ trợ khi thiết kế tải không đồng nhất.

Cuối cùng, không nên quên rằng những giới hạn của nhân hệ điều hành này phải đi kèm với các cấu hình hệ thống như của... ulimit và các đơn vị systemd, để đảm bảo rằng các dịch vụ thực sự có thể sử dụng các tài nguyên bổ sung đã được định nghĩa và không bị chặn bởi hạn chế ở các lớp trên.

Tổng quan về nhân hệ điều hành, NUMA, liên kết CPU và các trang bộ nhớ lớn.

Ngoài mạng, bộ nhớ và hệ thống tập tin, bản thân nhân hệ điều hành còn cung cấp một loạt các tùy chọn tinh chỉnh ảnh hưởng đến cách lập lịch các tiến trình, cách phân bổ khối lượng công việc trên các lõi và các nút NUMA, cũng như cách quản lý bộ nhớ ở quy mô lớn. Trên các máy hiện đại với nhiều lõi và thậm chí nhiều socket, những chi tiết này thường tạo nên sự khác biệt giữa một máy chủ cân bằng và một máy chủ có một số lõi bị quá tải trong khi các lõi khác bị sử dụng dưới mức tối ưu . Cũng đáng để khám phá các nhân hệ điều hành thay thế như nhân Liquorix trong các môi trường cần cấu hình độ trễ khác nhau.

Các thông số như kernel.pid_max Chúng thiết lập phạm vi tối đa của ID tiến trình mà hệ thống có thể gán, điều này rất quan trọng đối với các nút chạy một số lượng lớn container hoặc các tiến trình tạm thời. Điều chỉnh các tùy chọn ghi nhật ký hạt nhân (kernel.printk) giúp giảm thiểu nhiễu quá mức trong dmesg trong khi vẫn ghi lại các sự kiện quan trọng, điều này cũng ảnh hưởng gián tiếp đến khả năng chẩn đoán và tính ổn định.

Về cấu trúc bộ nhớ, tham số kernel.numa_balancing Nó kiểm soát mức độ mà nhân hệ điều hành tự động di chuyển các trang giữa các nút NUMA. Việc vô hiệu hóa nó trong một số môi trường nhất định cho phép quản lý rõ ràng hơn về liên kết tiến trình và bộ nhớ, bằng cách sử dụng các công cụ như... numactl để đảm bảo các tiến trình tiêu tốn nhiều CPU và RAM vẫn nằm trên cùng một nút, giúp giảm thiểu... Độ trễ phát sinh từ việc truy cập từ xaĐể hiểu rõ hơn về sự tương tác giữa phần cứng và lập lịch lõi, việc xem xét lại các công nghệ như... cũng rất hữu ích. Giám đốc chuỗi Intel.

Những trang sách khổng lồ (vm.nr_hugepagesĐây là một thành phần quan trọng khác trong các hệ thống cơ sở dữ liệu hoặc các khối lượng công việc khác xử lý các vùng bộ nhớ liền kề lớn. Việc dành riêng một số lượng trang khổng lồ phù hợp (2 MB hoặc thậm chí 1 GB, tùy thuộc vào kiến ​​trúc) có thể giảm chi phí hoạt động của TLB và cải thiện đáng kể hiệu suất của các ứng dụng chạy trên đó. nhiều thao tác trên các khối bộ nhớ lớnĐể điều này có hiệu quả, cấu hình nhân hệ điều hành phải được phối hợp với chính ứng dụng, sao cho ứng dụng sử dụng bộ nhớ đó một cách rõ ràng.

Trong lĩnh vực độ trễ và lập lịch, có các tham số của bộ lập lịch như sau: kernel.sched_min_granularity_ns, kernel.sched_wakeup_granularity_ns o kernel.sched_migration_cost_nsCác thiết lập này tinh chỉnh kích thước của các "khối" CPU được phân bổ cho mỗi tác vụ và mức độ tích cực mà nhân hệ điều hành di chuyển các tiến trình giữa các lõi. Giá trị nhỏ hơn thể hiện một hệ thống dễ bị gián đoạn hơn, có xu hướng cung cấp câu trả lời hay nhất cho các nhiệm vụ tương tác Đôi khi, điều này dẫn đến việc giảm một chút hiệu suất xử lý thô.

Trong các hệ thống mà bộ nhớ là một tài nguyên nhạy cảm, một số quản trị viên chọn kích hoạt chế độ khẩn cấp (panic mode) trong trường hợp xảy ra lỗi ngoài ý muốn (out-of-box error)vm.panic_on_oom) và thiết lập kernel.panic với thời gian khởi động lại tự động. Chiến lược này, mặc dù có phần quyết liệt, có thể hữu ích trong môi trường có tính sẵn sàng cao, nơi mà Việc khởi động lại nhanh chóng và có kiểm soát sẽ tốt hơn là để máy chủ bị treo và không ổn định. trong giờ.

Các lĩnh vực chuyên môn: web, cơ sở dữ liệu, độ trễ thấp và Kubernetes

Thay vì áp dụng một giải pháp thần kỳ duy nhất, sẽ hiệu quả hơn nếu tạo các cấu hình sysctl phù hợp với các loại khối lượng công việc khác nhau: máy chủ web, cơ sở dữ liệu, nền tảng container hoặc hệ thống độ trễ thấp. Phân phối các thiết lập này trong các tệp như... 99-webserver.conf, 99-database.conf o 90-kubernetes.conf giúp duy trì cấu hình có tổ chức và dễ quản lý phiên bảnBạn cũng có thể xem xét các bản phân phối và phiên bản hướng đến hiệu năng như... Phiên bản máy chủ CachyOS Dành cho những môi trường rất đặc thù.

Đối với các máy chủ web (Nginx, Apache, máy chủ proxy, v.v.), điều thiết yếu là phải xử lý được lượng lớn kết nối đồng thời với hàng đợi lớn và thời gian phản hồi dài. FIN_WAIT Nhờ tinh chỉnh, mở rộng phạm vi cổng tạm thời và giới hạn mô tả rất cao, số lượng yêu cầu HTTP mỗi giây thường tăng từ vài trăm lên đến vài nghìn, giúp giảm độ trễ trung bình và loại bỏ lỗi. hàng đợi quá tải hoặc cổng đầy.

  Phiên bản hiếm nhất của Windows XP và những điều kỳ thú khác của hệ điều hành huyền thoại này.

Về phía cơ sở dữ liệu (MySQL, PostgreSQL và các hệ thống tương tự), ưu tiên được dành cho việc sử dụng tối thiểu bộ nhớ ảo (swap), tinh chỉnh việc ghi trang dữ liệu bẩn (dirty page writing), và thiết lập bộ nhớ chia sẻ và semaphore phù hợp cho engine. Các tham số như... kernel.shmmax, kernel.shmall, kernel.sem và cấu hình trang lớn tạo ra sự khác biệt về mặt giao dịch mỗi giây và thời gian phản hồiTăng hiệu năng lên gấp hai hoặc ba lần so với giá trị mặc định trong nhiều trường hợp.

Đối với các ứng dụng có độ trễ cực thấp (giao dịch, chơi game trực tuyến, xử lý thời gian thực), thậm chí còn có thêm các thiết lập cụ thể hơn: net.ipv4.tcp_low_latency, vô hiệu hóa chế độ khởi động chậm sau khi không hoạt động, sử dụng tcp_fastopen, các tham số thăm dò bận rộn (net.core.busy_poll, busy_readvà, trong nhiều trường hợp, việc vô hiệu hóa các trang lớn trong suốt bằng cách /sys/kernel/mm/transparent_hugepage/enabledTất cả những điều này nhằm mục đích giảm thiểu Hàng đợi xử lý và độ trễ đạt đỉnh điểm ở các phân vị cao., đạt được những cải tiến vượt bậc trong P99.

Trong môi trường container và Kubernetes, ngăn xếp mạng và theo dõi kết nối chịu áp lực đặc biệt lớn. Các tham số như... net.ipv4.ip_forward, net.bridge.bridge-nf-call-iptables, net.netfilter.nf_conntrack_maxViệc sử dụng các cổng dành riêng cho NodePort hoặc điều chỉnh bảng ARP là phổ biến ở các node xử lý hàng trăm hoặc hàng nghìn pod. Điều chỉnh chúng đúng cách sẽ giúp ngăn ngừa sự cố. các kết nối bị cắt ngắn, hết thời gian chờ hoặc bảng bị bão hòa với conntrack.

Bên cạnh những cấu hình cụ thể này, một số tổ chức lựa chọn kho lưu trữ tập trung vào hiệu suất với bảo mật nâng cao, kết hợp bộ đệm mạng lớn và giảm thiểu việc sử dụng bộ nhớ ảo với các biện pháp như... tcp_syncookies hoặc chặn các chuyển hướng nguy hiểm. Mục tiêu là đạt được Điểm cân bằng giữa hiệu năng mạnh mẽ và độ cứng hợp lý.

Công cụ phân tích và giám sát nhân hệ điều hành

Việc điều chỉnh nhân hệ điều hành mà không đo lường giống như chơi nhạc cụ trên bàn trộn âm thanh khi bị bịt mắt. Linux cung cấp một kho công cụ để hiểu hệ thống thực sự đang làm gì, từ các bộ đếm đơn giản đến các bản ghi chi tiết về các chức năng của nhân, cho phép bạn liên hệ các thay đổi cấu hình với các hiệu ứng có thể đo lường được.

Trong số những tiện ích hàng ngày có thể kể đến: vmstat, iostat, sar, ss, slabtop, htop o pidstatCung cấp thông tin nhanh chóng về các tiến trình, CPU, I/O, socket và mức sử dụng bộ nhớ cache. Kết hợp với nhật ký hệ thống và số liệu được xuất sang Prometheus, Grafana hoặc collectd, cùng với các tài nguyên như... công cụ giám sát hệ thống nâng cao dành cho LinuxChúng cung cấp một bức tranh khá đầy đủ về cách máy chủ hoạt động trước và sau mỗi lần tinh chỉnh.

Để đi vào chi tiết hơn, các công cụ như... perf Chúng cho phép phân tích mức sử dụng CPU ở cấp độ chức năng, cả người dùng và nhân hệ điều hành, ghi nhật ký các sự kiện trong vài giây hoặc vài phút, sau đó cung cấp báo cáo tương tác. Với perf stat, perf record y perf report bạn có thể thấy Thời gian CPU thực sự được tiêu thụ ở đâu và phần nào tương ứng với lõi xử lý.Ví dụ, việc xác định một cơn bão gây gián đoạn hoặc một bộ lập lịch được điều chỉnh kém.

Nếu bạn cần độ chi tiết cao hơn nữa, ftrace Hệ thống theo dõi của nhân hệ điều hành cung cấp khả năng kích hoạt các trình theo dõi cụ thể (ví dụ: trình theo dõi hàm) và kiểm tra trong thời gian thực hoặc sau khi thực thi các lệnh gọi nào đang diễn ra. Kích hoạt trình theo dõi thích hợp và phân tích nội dung của nó. /sys/kernel/debug/tracing/trace nó tiết lộ cho bạn các điểm nóng bên trong chính nhân hệ điều hànhĐiều này rất hữu ích khi các chỉ số cấp cao không đủ.

Song song đó, nên triển khai các kịch bản giám sát tự động định kỳ ghi lại các dữ liệu quan trọng (thống kê mạng, bộ đếm bộ nhớ, số lượng mô tả tệp đang mở, v.v.) vào nhật ký xoay vòng. Khi đạt đến một số ngưỡng nhất định (ví dụ: vượt quá số lượng mô tả tệp đang mở được chỉ định), các kịch bản này có thể tạo cảnh báo qua email hoặc các kênh khác, giúp phát hiện các xu hướng nguy hiểm trước khi vấn đề trở nên nghiêm trọng.

Cuối cùng, trong các giai đoạn kiểm tra độ bền kéo dài (24 giờ trở lên), các công cụ như... stress-ng kết hợp với việc thu thập liên tục các chỉ số (thông qua) vmstat, iostat, sar(Các lệnh này cho phép bạn đánh giá độ ổn định của hệ thống với cấu hình kernel mới, xác minh rằng không có sự kiện OOM, sự cố, khởi động lại đột ngột hoặc suy giảm hiệu năng dần dần dưới tải trọng liên tục.)

Tối ưu hóa nhân Linux bằng sysctl và các cơ chế khác không phải là một nhiệm vụ đơn lẻ, mà là một quá trình lặp đi lặp lại bao gồm việc đo lường kết quả, điều chỉnh tham số và ghi chép tỉ mỉ mọi thứ. Với một phương pháp luận rõ ràng, các cấu hình cụ thể cho từng loại khối lượng công việc, một bộ công cụ phân tích mạnh mẽ và kiểm soát thay đổi nghiêm ngặt, có thể đạt được các máy chủ tận dụng tối đa phần cứng, với thông lượng tăng, độ trễ giảm và độ ổn định cao hơn đáng kể so với cấu hình mặc định của nhà sản xuất.

Tối ưu hóa độ trễ nhân Linux
Bài viết liên quan:
Hướng dẫn nâng cao về tối ưu hóa nhân Linux và giảm độ trễ