Đã cải thiện các thiết lập mặc định trên các thiết bị Linux

Diem Do

Tôi nhận được yêu cầu về các thiết lập mặc định dành cho Linux khá thường xuyên và đang viết về điều này trong một email và quyết định gởi nó rộng rãi đến người dùng. 

 

Nếu bạn có đề nghị tốt hơn, hãy vui lòng gởi cho tôi một yêu cầu bằng mọi cách. Nút edit trên cùng của trang sẽ giúp bạn. 

 

Có một vài nhóm thiết lập bên dưới. Hầu hết những thiết lập dưới đây sẽ kết thúc ở  /etc/sysctl.conf or /etc/sysctl.d/filename.conf (phụ thuộc vào distro của bạn). Họ có thể áp dụng ngay lập tức với sudo sysctl -p /etc/sysctl.d/filename.conf.

 

Tôi đã áp dụng hầu hết những điều này cho hàng trăm các thiết bị và không bao giờ thấy có một vấn đề nào. Cho thấy, đây là thử nghiệm trong phi sản xuất(non-production) đầu tiên! Tôi chạy các thiết lập giống nhau thông qua mỗi thiết bị Linux, bao gồm  laptop Intel NUCs, các trạm làm việc Xeon và máy chủ khổng lồ NUMA. Có nhiều việc phải làm cho mỗi trường hợp để có được hiệu quả tốt nhất, nhưng tôi nghĩ đó là nơi hầu hết mỗi thiết bị nên bắt đầu sử dụng. 

 

Sửa(Edit): Tôi đang nhận được một vài ý kiến phàn nàn về những giá trị max lớn. Đó là lý do tôi thiết lập thiết bị cao cấp mà tôi làm việc không có multi-user bằng bất kỳ cách nào. Những thiết lập này sẽ làm rối thiết bị trường đại học được chia sẻ, nhưng đối với một trạm Linux hay máy chủ, chỉ có một người dùng/ứng dụng  không bao giờ muốn hoặc mong đợi đạt được những giới hạn mặc định lố bịch. Như tôi đã đề cập , chúng tôi chạy những thiết lập này trên hàng ngàn các thiết bị trong vài năm qua và không bao giờ thấy chúng gây ra bất kỳ vấn đề nào , thực tế những việc xảy ra khá đối lập , người dùng không hề ngạc nhiên bởi sự giới hạn ngốc nghếch này giống như việc xử lý tập tin 1024 được hay những ứng dụng phát triển xa đối với lượng thời gian không xác định trong khi những trang ứng dụng nạp hạt nhân từ swap được chuyển ra để nhường chỗ cho VFS.

 

Như Linux >= 3.5, thiết lập  vm.swappiness=0 bị vô hiệu hóa trao đổi hoàn toàn, nhưng bạn nên chạy swapoff -a sẽ tốt hơn từ 

những người đã báo cáo tạm ngưng.

 

 

# tell the kernel to only swap if it really needs it

vm.swappiness = 1

# increase the number of allowed mmapped files

vm.max_map_count = 1048576

# increase the number of file handles available globally

fs.file-max = 1048576

# increase the number of sysv ipc slots for each type

kernel.shmmax = 65536

kernel.msgmax = 65536

kernel.msgmnb = 65536

# allow up to 999999 processes with corresponding pids

# this looks nice and rarely rolls over – I’ve never had a problem with it.

kernel.pid_max = 999999 # unnecessary, but I like it

# seconds to delay after a kernel panic and before rebooting automatically

kernel.panic = 300

 

# do not enable if your machines are not physically secured

# this can be used to force reboots, kill processses, cause kernel crashes, etc without logging in

# but it’s very handy when a machine is hung and you need to get control

# that said, I always enable it

kernel.sysrq = 1

 

Có những thiết lập mặc định được cải thiện để mở rộng network của Linux. Tôi khuyên bạn nên tra Google “Linux C10k ” để biết thêm ý nghĩa của chúng.

 

net.ipv4.ip_local_port_range = 10000 65535

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 2500

net.core.somaxconn = 65000

 

Đây là những thiết lập đã được nâng cao hơn để kiểm soát bao nhiêu dữ liệu được viết để có thể được tổ chức trong RAM trước khi cho vào đĩa. Đây là ứng dụng an toàn để áp dụng, nhưng vô cùng điên cuồng với con số  có thể dễ dàng ảnh hưởng đến xấu đến hiệu xuất làm việc. Tôi thích một thiết lập dirty-background khá thấp để đảm bảo IO không nhận được sao lưu. Sự thiết lập những con số thật sự cao có thể rất hữu ích cho việc chuyển đổi những tập tin lớn và nhỏ hơn RAM, nhưng cuối cùng bạn phải trả phí cho việc bỏ chúng ra đĩa , vì vậy tôi khuyên bạn không nên điên cuồng.  

 

# these will need local tuning, currently set to start flushing dirty pages at 256MB

# writes will start blocking at 2GB of dirty data, but this should only ever happen if

# your disks are far slower than your software is writing data

# If you have an older kernel, you will need to s/bytes/ratio/ and adjust accordingly.

vm.dirty_background_bytes = 268435456

vm.dirty_bytes = 1073741824

 

Cuối cùng, tôi nghĩ rằng toàn bộ những giới hạn pam kinh doanh là vô dụng trên hệ thống single-user(ví dụ : các trạm làm việc, máy chủ database), vì vậy tôi có thể vô hiệu hóa nó. Đặt /etc/security/limits.conf or /etc/security/limits.d/disable.conf (phụ thuộc distro và sở thích của bạn ). Bạn cần phải đăng xuất và đăng nhập trở lại  trong giới hạn  để áp dụng cho những đăng nhập hiện tại. ssh localhost ulimit -a là một cách nhanh chóng để kiểm tra nếu những thiết lập được áp dụng.

 

 

* – nofile     1048576

* – memlock    unlimited

* – fsize      unlimited

* – data       unlimited

* – rss        unlimited

* – stack      unlimited

* – cpu        unlimited

* – nproc      unlimited

* – as         unlimited

* – locks      unlimited

* – sigpending unlimited

* – msgqueue   unlimited

 

Một khi các thiết lập được áp dụng, sẽ có nhiều vẫn đề sẽ tiến xa. XIn vui lòng cho tôi biết nếu bạn chạy bất kỳ vấn đề nào hoặc trên Twitter như @AlTobey hoặc qua email tobert@gmail.com.

Chia sẻ bài viết ngay

Nguồn bài viết : tobert.github.io