Linuxシステムパラメータ構成の概要

7424 ワード

Linuxサーバは、アプリケーションを最適化する際にsysctlとPAMの2つのモジュールを使用してサーバを最適化することが多い.この2つについての紹介も多く、ここでは主に関連内容を集中して、全体的に紹介しました.
Sysctlカーネルパラメータ構成
sysctl-aコマンドを使用して、使用中のすべてのカーネルパラメータを表示します.カーネルパラメータは比較的多く(一般的に500項目まで)、接頭辞によって主に以下のいくつかの種類に分けられる:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom、dev.raid、kernelなど.
注意:インストールされているコンポーネントは使用方法と異なり、使用しているカーネルパラメータは異なります.すべてのカーネルパラメータの説明ドキュメントはlinux-source-codeDocumentationsysctlに配置されています.カーネルパラメータの説明を知りたい場合は、そのディレクトリの下に説明ドキュメントを表示できます.
Sysctlカーネルパラメータは2つの修正方法1)コマンド設定の方式があり、カーネル運転構成パラメータに対応する
2)ファイル設定の方式、カーネル静的構成パラメータに対応
Sysctlカーネル動的システムパラメータ構成パラメータ保存の主な位置は/proc/sys
sysctl-wパラメータ名=値を使用する方法
例えばnet.ipv4.ip_forwardの値を1に変更し、コマンド「sysctl-w net.ipv 4.ip_forward=1」を使用します.
カーネルパラメータに対応するprocファイルの変更
カーネルパラメータは/proc/sys/の下にあり、パラメータ名はファイルが存在するパスであり、"/"は"."取って代わる.たとえば、/proc/sys/net/ip_forwardのパラメータ名はnet.ipv4.ip_forward.
例えばnet.ipv4.ip_forwardの値を1に変更し、コマンド「echo"1">/proc/sys/net/ipv 4/ip_を使用します.forward”.
ここでprocファイルは普通のファイルとは違います.一般的に、1つのファイルがechoでコンテンツを書き込むとテキストファイルになりますが、echoがprocファイルを変更した後も空のファイルです.
Sysctlカーネル静的システムパラメータ構成そのパラメータ保存の主な位置は/etc/sysctlである.confは、システム全体のパラメータに対して構成されます.ファイル方式の利点は、カーネルパラメータ設定の値をファイルで保持できることです.
カーネルパラメータはデフォルトで/etc/sysctlに保存されます.confファイルにあります.修正するときはviでsysctlを直接編集できます.confファイルは、変更するカーネルパラメータの内容を追加し、パラメータ名=値を変更します.
例えばnet.ipv4.ip_forwardの値はsysctlで1に変更されました.confに次の行を追加します.
net.ipv4.ip_forward=1

ファイルを修正して保存します.
sysctl-pプロファイル名を使用して構成を有効にします
プロファイルがデフォルトの場合、プロファイル名を入力せずにsysctl-pを使用できます.
システムが再起動し、プロファイルからカーネルが有効になります.
以前は修正したカーネルパラメータをファイルに入れたと思っていましたが、システムが起動したときにこのファイルを読み、再起動しても設定は失効しないはずです.しかし、検証された結果、一般的には失効します.デフォルトのbootをSysctlサービスが開き、システムが起動するとこのファイルの設定が実行されます.あるいは、パラメータを変更するコマンド「/sbin/sysctl-e-p/etc/sysctl.conf」を起動実行スクリプトファイルに書き込む/etc/rc.local、これによりシステムが再起動しても構成が失効しません.
PAM挿入式認証モジュールのパラメータ構成そのパラメータ保存の主な位置は/etc/security/limitsである.confは、ユーザーパラメータに対して構成されます.
Linux PAM(プラグイン認証モジュール、Pluggable Authentication Modules)のpam_limits.soのプロファイルは、システムのデフォルトの制限を突破し、システムアクセスリソースに対して一定の保護作用がある.ユーザがサーバにアクセスすると、サービスプログラムは要求をPAMモジュールに送信し、PAMモジュールはサービス名に基づいて/etc/pamである.dディレクトリの下から対応するサービスファイルを選択する、サービスファイルの内容に応じて具体的なPAMモジュールを選択して処理する.
注意:limits.confファイル構成が有効になるにはpam_を確認する必要があります.limits.soファイルが起動ファイルに追加されます.ビュー・プログラム・プロファイルに「session required/lib/security/pam_limits.so」があります.
たとえば、adminユーザーのsshdへのログインを制限するサービスは2つを超えてはいけません.
/etc/pam.d/sshdに追加:session required pam_limits.so
/etc/security/limits.confに追加:admin-maxlogins 2
注意:アプリケーションがPAMでサポートされているかどうかを確認し、lddでリンク関係を表示します.
$ ldd /usr/sbin/sshd
        linux-vdso.so.1 =>  (0x00007fffcb5fe000)
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fa5412ce000)
        libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fa5410aa000)
        libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fa540e9b000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fa540c78000)
        libck-connector.so.0 => /usr/lib/x86_64-linux-gnu/libck-connector.so.0 (0x00007fa540a74000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fa54082e000)
        libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fa540452000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa54024f000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa540035000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fa53fdfc000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fa53fbb5000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fa53f8e9000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fa53f6e5000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa53f320000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fa53f105000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa53ef01000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fa53ecc3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa5417b0000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa53eaa4000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa53e89c000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fa53e66d000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fa53e461000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fa53e25d000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fa53e042000)

PAM挿入式認証モジュール構成フォーマット
username|@groupname   type  resource  limit

username|@groupname
制限が必要なユーザー名を設定し、グループ名の前に@とユーザー名の区別を付けます.すべてのユーザーの制限にワイルドカード*を使用することもできます.
type
タイプはソフトウェア、hard、および-で、ソフトウェアは現在のシステムで有効な設定値を指します.hardは、システムで設定できる最大値を示します.ソフトの制限はharの制限より高くはならない.-を使用して、ソフトウェアとhardの値が同時に設定されていることを示します.ソフトルールの制限(警告)を超えてもよいが、ハードルールの制限を超えてはならない.
resource
制限するリソースを示します
limit
生産資源数量を表す
PAM挿入型認証モジュール構成リソース1)core-カーネルファイルのサイズを制限します.coreファイルとは、プログラムがクラッシュしたときに、プロセスの現在の作業ディレクトリのcoreファイルにそのプロセスの記憶画像がコピーされます.coreファイルは、主にデバッグに使用されるメモリマッピング(デバッグ情報も追加)にすぎません.coreファイルはバイナリファイルで、対応するツールでプログラムがクラッシュしたときのメモリイメージを分析する必要があります.システムのデフォルトcoreファイルのサイズは0なので、作成されません.ulimitコマンドでcoreファイルのサイズを表示および変更できます.
2)date-最大データサイズ
3)fsize-最大ファイルサイズ
4)memlock-最大ロックメモリアドレス空間
5)nofile-ファイルを開く最大数.多くのソケットを接続して開く必要があるアプリケーションでは、ulimit-nを使用するか、nofileパラメータを設定することで、ユーザーのファイル記述子の数をデフォルト値より高く設定することが望ましい.
6)rss-最大持続設定サイズ
7)stack-最大スタックサイズ
8)cpu-分単位の最大CPU時間
9)noproc-プロセスの最大数
10)as-アドレス空間制限
11)maxlogins-このユーザーがログインできる最大数
PAM挿入型認証モジュール構成方式1)一時的に有効
     ulimit    shell    ,Ulimit    
-a            
-c      core       
-d                
-f      shell            
-m              
-s             
-t            CPU    
-p         
-n             
-u           
-v            

2)永久発効
ログインshellによって読み取られたファイルの1つ(例えば~/.profile)に、対応するulimit文を追加することによって、shellに特化したユーザリソースファイルである.または/etc/security/limitsを編集する.conf
PAM挿入型認証モジュール共通構成
1)無制限(unlimited)に設定することを推奨する
データセグメント長:ulimit–d unlimited
最大メモリサイズ:ulimit–m unlimited
スタックサイズ:ulimit–s unlimited
CPU時間:ulimit–t unlimited
仮想メモリ:ulimit–v unlimited
2)ソケットアプリケーション
多くのソケット接続を行い、それらを開いた状態にする必要があるアプリケーションでは、ulimit-nを使用するか、/etc/security/limitsを設定することが望ましい.confのnofileパラメータは、ユーザーがファイル記述子の数をデフォルト値より少し高く設定します.
3)アプリケーション開発デバッグ
# ulimit -c 1000
-cはcoreファイルを変更するサイズを指定し、1000はcoreファイルのサイズを指定します.coreファイルのサイズに制限はありません.例えば、ulimit-c unlimited
注意:変更を永続的に有効にするには、プロファイルを変更する必要があります.bash_profile、/etc/profileまたは/etc/security/limits.conf
4)Oracleユーザーのshell制限の向上
まず、/etc/security/limitsを変更します.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

次に、プログラム構成要件/etc/pamを変更する.d/login
session required /lib/security/pam_limits.so

最後に、実行環境を動的に設定
/etc/profile
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi