CentOS 7'de systemd tarafından başlatılan işlemler için nproc artırılması


26

Yerel kullanıcılar için nofile ve nproc değerini başarıyla artırdım, ancak systemd tarafından başlatılan işlemler için uygun bir çözüm bulamadım. MariaDB yapılandırmasına max_open_files eklemek yardımcı olmuyor. Limiti manuel olarak değiştirmek için su - mysql işlevini yerine getirmez (Bu hesap şu anda mevcut değil).

/etc/security/limits.conf

* soft nofile 102400
* hard nofile 102400
* soft nproc 10240
* hard nproc 10240

/etc/security/limits.d/20-nproc.conf (dizinde başka dosya yok)

* soft nofile 102400
* hard nofile 102400
* soft nproc 10240
* hard nproc 10240

/etc/sysctl.conf

fs.file-max = 2097152

/etc/pam.d/system-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

/etc/pam.d/systemd-user

#%PAM-1.0

# Used by systemd when launching systemd user instances.

account include system-auth
session include system-auth
auth required pam_deny.so
password required pam_deny.so

/var/log/mariadb/mariadb.log

[Warning] Changed limits: max_open_files: 1024  max_connections: 32  table_cache: 491

/ Proc / mysql_pid / sınırlar

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             30216                30216                processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       30216                30216                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Farklı işlemlerin (kullanıcıların) farklı Max açık dosya numaralarına sahip olması ilginçtir:

mysql - 1024 4096
apache - 1024 4096
postfix - 4096 4096

Yanıtlar:


67

systemd, / etc / security / limitleri * tamamen yok sayar. Güncelleme sırasında sistemd hizmet dosyasını otomatik olarak sıkıştıran bir RPM kullanıyorsanız, bu dosyaları 'normal' olarak işaretlemelerini istemek için bir PR dosyası isteyeceksiniz

.Service dosyasını güncellemeniz gerekiyor /usr/lib/systemd/system/<servicename>.service

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

sickill , pakete yüklenen değerleri (yukarıdaki dosyada bulunur) ekleyerek de geçersiz kılabileceğinizi belirtti./etc/systemd/system/<servicename>.d/override.conf

[Service]
LimitNOFILE=49152

Bu, paket güncellemesinde üzerine yazılma tehlikesi olmayan sisteme özel ayarların ilave bonusunu sağlar.

Ardından komutu verin: systemctl daemon-reload


Type=notifygerekli ya her çözüm çalışır Type?
Karl Richter

@KarlRichter Sistem dökümanlarından derlediklerime göre, Limit * girişleri [Servis] altında bulunan Just Another Argümanıdır. Söylendiği gibi, bunun bir şekilde ya da diğerinde kesin olduğunu söyleyebilmek için diğer Tip değerleri ile uğraşmadım.
Gladiatr72

3
Ünite dosyasını yerinde değiştirmek yerine (ki bu paket yükseltmesinde geçersiz kılınabilir) yalnızca bu yanıtta görüldüğü gibi belirli ayarları geçersiz kılabilirsiniz: stackoverflow.com/a/36423859/264409
sickill

@KarlRichter Systemd belgelerinde servis türünün limit tanımlarından etkilendiğini belirten hiçbir şey okumadım.
gladiatr72,

3
/etc/systemd/system/<servicename>.service.d/override.conf, systemctl daemon-reloadVe 'systemctl kedi <servicename>' Doğru Dolu olmadığını kontrol etmek.
Cherif KAOUA 12:16

1

/etc/sysctl.conf64000'e izin verilen maksimum açık dosya sayısını artırmak için dosyayı düzenleyin ve Aşağıdaki satırı ekleyin.

Bu iyi bir varsayılan başlangıç ​​değeridir, ancak lütfen ortamınız için bu değeri araştırın ve ince ayar yapın.

fs.file-max=64000

Bundan bahsetmedim ama çoktan ayarlandı. cat / proc / sys / fs / dosya-max: 2097152
amq

1
Ardından mariadb.service dosyanızda LimitNOFILE değerini belirten bir satır eklemeniz gerekir. Bunu /etc/systemd/system/mariadb.service adresinden veya doğrudan /lib/systemd/system/mariadb.service adresinden geçersiz kılarak yapabilirsiniz. Hizmetinizin mariadb'den farklı bir adı varsa, lütfen dosya adını değiştirin. LimitNOFILE için Google ile bu konuda bazı belgeler bulacaksınız.
Pablo,

0

Yapılandırma içinde dosyaları /usr/lib/systemd/system/ gerektiğini değil elle düzenlenebilir ve bir rpm güncellenme bu dizinde yöneten dosyaları güncelleyecektir ki (beklenen değilse) son derece normaldir.

@Sickill ve @Cherif KAOUA yorumlarda belirtildiği gibi [ /programming/27849331/how-to-set-nginx-max-open-files/36423859#36423859] , /etc/systemd/system/<servicename>.service.d/override.conf. Örneğin:

[Service]
LimitNOFILE=65536

Ardından systemctl daemon config'i yeniden yükleyin:

systemctl daemon-reload

RHEL, Sistem Yöneticisi Kılavuzunda systemd üzerine, diğer şeylerin yanı sıra, systemd birim dosyalarının nerede bulunması gerektiğini ve varsayılan ayarların nasıl geçersiz kılınacağını listeleyen harika bir bölüme sahiptir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.