Oracleシステムのカーネルパラメータ、リソース制限、およびipcs関連コマンドの概要

1つは、Oracleカーネルパラメータです。

Oracleカーネルパラメータ構成ファイルは、/ etc /sysctl.confパスにあります。

vi /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

#ORACLE SETTING
kernel.shmmax = 64424509440
kernel.shmmni = 4096
kernel.shmall = 15728640
kernel.sem = 5010 641280 5010 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
fs.aio-max-nr = 1048576
fs.file-max = 6815744

1. Kernel.shmall:共有メモリページの最大数。これは、システムが一度に使用できる共有メモリセグメントの最大数を指します。
ページ単位のLinux共有メモリページサイズは4KBです(RedHat Linuxシステムのページサイズは4096または4K、実際の環境はgetconfPAGE_SIZE)の結果の影響を受けます。共有メモリセグメントのサイズは、共有メモリページサイズの整数倍です。共有メモリセグメントの最大サイズは16Gに設定でき、必要な共有メモリページの対応する数は16GB / 4KB = 16777216KB / 4KB = 4194304(ページ)です。
パラメータ値は、システムメモリサイズに応じて最適化されます。

 ORACLE默认是2097152            
  1G*1024*1024/4=262144
  kernel.shmall = 1G/4k=1048576k/4k=262144    ---内存1G
  kernel.shmall = 2G/4k=2097152k/4k=524288    ---内存2G
  kernel.shmall = 4G/4k=4194304k/4k=1048576    ---内存4G
  kernel.shmall = 8G/4k=8388608k/4k=2097152    ---内存8G
  kernel.shmall = 16G/4k=16777216k/4k=4194304    ---内存16G
  kernel.shmall = 32G/4k=33554432k/4k=8388608    ---内存32G
  kernel.shmall = 64G/4k=67108864k/4k=16777216   ---内存64G

2. Kernel.shmmax:単一の共有メモリセグメントの最大値(バイト単位)
。shmmaxはコアパラメータの最も重要なパラメータの1つです。これは、単一の共有メモリセグメントの最大値を定義するために使用されます。shmmax設定は、十分に大きく、より大きい必要があります。 Oracleでのsga-max-sizeの値。そうでない場合、Oracleのパフォーマンスが低下します。通常、32ビットオペレーティングシステムは、システムでサポートされている最大メモリに直接設定されます。64ビットオペレーティングシステムは、通常、sga-max-sizeの値よりも大きく設定できます。最大共有メモリは物理メモリの半分に設定できます。物理メモリが1Gの場合、最大共有メモリは512 1024 1024 = 536870912に設定できます。以下同様に、redhatの最大共有メモリは410241024 * 1024-1 =を超えることはお勧めしません。 4294967295。

 32位的操作系统4G最大值 4294967295  
 64位操作系统1G*1024*1024*1024-1即一个G{(1G*1073741824)-1}
kernel.shmmax = 2147483647    ---内存2G
kernel.shmmax = 4294967295    ---内存4G
kernel.shmmax = 8589934592    ---内存8G
kernel.shmmax = 12884901887    ---内存12G
kernel.shmmax = 17179869184    ---内存16G
kernel.shmmax = 34359738368    ---内存32G
kernel.shmmax = 68719476736    ---内存64G

3. Kernel.shmmni:共有メモリセグメントの最小数
oracleは、デフォルト値を4096に設定します。これは通常十分であり、調整する必要はありません。

4. Kernel.sem:4つの値
SEMMSL、SEMMNS、SEMOPM、SEMMNIに対応

(1)SEMMSL:信号セットあたりの最大信号数。oracleDB
初期化パラメータファイルのPROCESSESパラメータが大きい場合は、SEMAPHORES設定を調整する必要があります。SEMMSLは、サーバー内の各インスタンスで最大のPROCESSESパラメータに設定する必要があります+10。最大のPROCESSESパラメーターが5000の場合、SEMMSLは5010に設定する必要があります。SEMMSLの値を100以上に設定することをお勧めします。
オラクルの最大接続数コマンドを表示します。

select * from v$license;

(2)SEMMNS:Linuxシステム全体の(信号セットではなく)信号の最大数を制御するために使用されます。
SEMMNSは、システム内の各データベースのPROCESSESインスタンスパラメータ設定の合計に、最大PROCESSES値の2倍を加えたものに設定し、最後に、システム内のOracleデータベースの数に応じてそれぞれに10を加算することをお勧めします。
SEMMNSパラメーターはSEMMSLSEMMNIに設定する必要があり、SEMMSLは5010であり、SEMMNSパラメーターは(5010128)= 641280である必要があります。

(3)SEMOPM:カーネルパラメーターは、各semopシステム呼び出しに対して実行できる信号操作の数を制御するために使用されます。semopシステム呼び出し(関数)は、1つのsemopシステム呼び出しを使用して複数の信号操作を完了する機能を提供します。信号セットには、各信号セットに最大数のSEMMSL信号を含めることができるため、SEMOPMをSEMMSLと等しく設定することをお勧めします。SEMOPMの値を100以上に設定することをお勧めします。

(4)SEMMNI:カーネルパラメータは、Linuxシステム全体の信号セットの最大数を制御するために使用されます。
SEMMNIの値を100以上に設定することをお勧めします。

以默认的配置kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
kernel.sem = 510 65280 510 128      --PROCESSES参数为500
kernel.sem = 1010 129280 1010 128    --PROCESSES参数为1000
kernel.sem = 3010 385280 3010 128     --PROCESSES参数为3000
4个值从左到右分别为semmsl、semmns、semopm和semmni
例:在oracle  ora.init文件参数中设置PROCESSES参数为5000
则semmsl=5010,semmni=128,semmns=semmsl* semmni=641280
另外semopm建议设置等于semmsl值即5010
那么kernel.sem=5010 641280 5010 128
alter system set processes=1000 scope=spfile;  
alter system set sessions=1522 scope=spfile; 


バージョンの異なる設定の違いに注意してください。oracle11gR2より前のバージョン:sessions = processes1.1 + 5
oracle11gR2の後のバージョン:sessions = methods1.5 + 22

5. fs.aio-max-nr = 1048576
は、システムで許可される非同期IO要求の最大サイズを示します。oracleのデフォルト設定は1M、つまり1048576であり、通常は変更する必要はありません
。6。fs.file-max = 6815744
fs.file-maxは、システムを開くことができることを意味します。ファイルハンドルの最大数の
推奨設定:fs.file-max = 512processes = 6.51024 * 1024 = 6.5M

2つ、他のカーネルパラメータ

(1)カーネルTCP関連のパラメーターはすべて/ proc / sys / net / ipv4の下にあり、次のオプションがあります

tcp_abort_on_overflow
tcp_adv_win_scale
tcp_allowed_congestion_control
tcp_app_win
tcp_autocorking
tcp_available_congestion_control
tcp_base_mss
tcp_challenge_ack_limit
tcp_congestion_control
tcp_dsack
tcp_early_retrans
tcp_ecn
tcp_fack
tcp_fastopen
tcp_fastopen_key
tcp_fin_timeout
tcp_frto
tcp_invalid_ratelimit
tcp_keepalive_intvl
tcp_keepalive_probes
tcp_keepalive_time
tcp_limit_output_bytes
tcp_low_latency
tcp_max_orphans
tcp_max_ssthresh
tcp_max_syn_backlog
tcp_max_tw_buckets
tcp_mem
tcp_min_tso_segs
tcp_moderate_rcvbuf
tcp_mtu_probing
tcp_no_metrics_save
tcp_notsent_lowat
tcp_orphan_retries
tcp_reordering
tcp_retrans_collapse
tcp_retries1
tcp_retries2
tcp_rfc1337
tcp_rmem
tcp_sack
tcp_slow_start_after_idle
tcp_stdurg
tcp_synack_retries
tcp_syncookies
tcp_syn_retries
tcp_thin_dupack
tcp_thin_linear_timeouts
tcp_timestamps
tcp_tso_win_divisor
tcp_tw_recycle
tcp_tw_reuse
tcp_window_scaling
tcp_wmem
tcp_workaround_signed_windows

(2)ARP関連のカーネルパラメータ、ARPキャッシュ制限の説明:

net.ipv4.neigh.default.gc_thresh1  在该值以下不gc,常驻缓存
net.ipv4.neigh.default.gc_thresh2  soft limit,可以临时超过该值,但只能保留5秒,之后会被gc掉
net.ipv4.neigh.default.gc_thresh3  hard limit,超过该值,就立即gc掉

(3)TCP関連の接続数:

tcp_max_syn_backlog: 半连接队列,是指定所能接受SYN同步包的最大客户端数量,即半连接上限;
somaxconn: 全连接队列,指服务端所能accept即处理数据的最大客户端数量,即完成连接上限。
tcp_max_syn_backlog:默认值为256
somaxconn:默认值为128,对应socket编程中的backlog,min{somaxconn,backlog}为实际值; 可以使用 ss -lnt中Recv-Q查看对列是否满

(4)ネット関連のパラメータについて

net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30

対応するパラメータの機能ノート:
net.ipv4.ip_local_port_rangeは、アプリケーションが使用できるIPv4ポート範囲を示します。oracle10gより前の推奨ポート範囲は102465000で、oracle11gの推奨ポート範囲は900065500です。

net.core.rmem_defaultは、ソケット受信バッファサイズのデフォルト値を表します。Oracleでは、265Kまたは262144に設定することをお勧めします。

net.core.rmem_maxは、ソケット受信バッファーの最大サイズoracle10gを示し、以前のバージョンは256kまたは262144に設定することをお勧めします。oracle11gは4Mまたは4194304に設定することをお勧めします。

net.core.wmem_defaultは、ソケット送信バッファーサイズのデフォルト値を表します。Oracleでは、265Kまたは262144に設定することをお勧めします。

net.core.wmem_maxは、ソケット送信バッファサイズoracle10gおよび以前のバージョンの最大サイズを表します。256kまたは262144に設定することをお勧めします。oracle11g1Mまたは1048576に設定することをお勧めします。

net.ipv4.tcp_tw_reuseは再利用を可能にします。TIME-WAITソケットを新しいTCP接続に再利用できるようにする

net.ipv4.tcp_tw_recycletimewait高速リサイクルを有効にする

net.ipv4.tcp_syncookiesはSYN Cookieを有効にし、SYN待機キューがオーバーフローすると、Cookieが処理できるようにします

net.core.somaxconn Webアプリケーションでは、listen関数のバックログによってカーネルパラメーターのnet.core.somaxconnがデフォルトで128に制限されますが、nginxによって定義されたNGXLISTENBACKLOGはデフォルトで511になるため、この値を調整する必要があります。

net.core.netdev_max_backlog各ネットワークインターフェイスがパケットを受信する速度がカーネルがこれらのパケットを処理する速度よりも速い場合に、キューに送信できるデータパケットの最大数

net.ipv4.tcp_max_orphansユーザーファイルハンドルに関連付けられていない、システム内のTCPソケットの最大数。この数を超えると、接続はすぐにリセットされ、警告メッセージが出力されます。この制限は、単純なDoS ***を防ぐためだけのものであり、あまり信頼したり、この値を人為的に減らしたりすることはできません。この値を増やす必要があります(メモリが増えた場合)

net.ipv4.tcp_max_syn_backlogは、クライアントの確認をまだ受け取っていない接続要求の最大数を記録します。128Mメモリを搭載したシステムの場合、デフォルト値は1024であり、メモリが小さいシステムの場合、デフォルト値は128です。

net.ipv4.tcp_timestampsタイムスタンプは、シリアル番号の巻き上げを回避できます。1Gbpsリンクは、以前に使用されたシリアル番号に確実に遭遇します。タイムスタンプにより、カーネルはそのような「異常な」パケットを受け入れることができます。ここでオフにする必要があります

net.ipv4.tcp_synack_retries反対側の接続を開くために、カーネルは前のSYNに応答してACKを含むSYNを送信する必要があります。これは、いわゆるスリーウェイハンドシェイクの2番目のハンドシェイクです。この設定は、カーネルが接続を放棄する前に送信されるSYN + ACKパケットの数を決定します

net.ipv4.tcp_syn_retriesカーネルが接続の確立をあきらめる前に送信されたSYNパケットの数

net.ipv4.tcp_fin_timeoutソケットがローカル要求によって閉じられた場合、このパラメーターは、ソケットがFIN-WAIT-2状態にとどまる時間を決定します。ピアはミスを犯して接続を閉じることはなく、予期せずクラッシュすることさえあります。デフォルト値は60秒です。2.2カーネルの通常の値は180秒です。3この設定を押すことができますが、マシンの負荷が軽いWEBサーバーであっても、多数のデッドソケット(FIN)が原因でメモリオーバーフローのリスクがあることに注意してください。 -WAIT-2は、最大1.5Kのメモリしか消費できないため、FIN-WAIT-1よりも危険性は低くなりますが、寿命は長くなります。

net.ipv4.tcp_keepalive_time keepaliveが有効になっている場合、TCPがkeepaliveメッセージを送信する頻度。デフォルトは2時間です

これらを構成した後、次のコマンドを使用してリロードし、有効にします

sysctl -p

3.リソース制限について

vi /etc/security/limits.conf
oracle soft nproc 2048
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

1.「ソフト」と「ハード」の違い

soft  xxx  : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。

hard  xxx  : 代表严格的设定,不允许超过这个设定的值。

例:softが2048に設定され、hardが16384に設定されている場合、使用数が1〜2048の場合は気軽に使用でき、使用数が2048〜16384の場合は警告メッセージが表示され、16384を超えるとエラーが報告されます。

2.「nproc」と「nofile」の違い

nproc  : 是操作系统级别对每个用户创建的进程数的限制

nofile : 是每个进程可以打开的文件数的限制

3.システムの構成を変更し、/
etc / security / Limits.conf開きます(一部のシステムは/etc/security/limits.d/90-nproc.confにあります)

设置限制数量,第一列表示用户,* 表示所有用户

soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile  :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);

4.備考

1)一般soft的值会比hard小,也可相等。
2)/etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf的配置
3)只有root用户才有权限修改/etc/security/limits.conf
4)如果limits.conf没有做设定,则默认值是1024

4つ目は、共有メモリ、メッセージキュー、セマフォの使用状況を表示するipcsコマンドについてです。

(1)ipcs -lコマンドは、各リソースのシステム制限情報を表示でき、システムで許可されている最大セマフォセットとセマフォ数制限、およびメッセージキュー内のメッセージの最大数を確認できます。

[oracle@localhost ~]$ ipcs -l

------ Messages Limits --------
max queues system wide = 7578
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 524288
max total shared memory (kbytes) = 18014398442373116
min seg size (bytes) = 1

------ Semaphore Limits --------             信号量限制
max number of arrays = 128                   最大数组数量
max semaphores per array = 250               每个数组的最大信号量数目
max semaphores system wide = 32000           系统最大信号量数
max ops per semop call = 100                 每次信号量调用最大操作数
semaphore max value = 32767                  信号量最大值

(2)ipcs -uコマンドは、各リソースの使用状況の概要情報を表示できます。この情報では、使用されているセマフォセットの数、セマフォの数、およびメッセージキューで現在使用されているメッセージの総数と占有されているスペースを確認できます。バイト数

[oracle@localhost ~]$ ipcs -u

------ Messages Status --------
allocated queues = 0
used headers = 0
used space = 0 bytes

------ Shared Memory Status --------
segments allocated 5
pages allocated 40
pages resident  40
pages swapped   0
Swap performance: 0 attempts     0 successes

------ Semaphore Status --------  信号量状态
used arrays = 2                           已使用数组
allocated semaphores = 168       已分配信号量数

(3)ipcs -pコマンドは、共有メモリとメッセージキューに関連するプロセス間でメッセージを取得できます。

[oracle@localhost ~]$ ipcs -p

------ Message Queues PIDs --------
msqid      owner      lspid      lrpid     

------ Shared Memory Creator/Last-op PIDs --------
shmid      owner      cpid       lpid      
32768      root       12624      6914 

(4)ipcs -a現在使用されている共有メモリ、メッセージキュー、およびセマフォのすべての情報を表示します

[oracle@localhost ~]$ ipcs -a

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x6c001f61 32768      root       600        292944     6                       

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x7a001f61 163840     oracle     600        12        
0x00000000 196609     nobody     600        1         
0x00000000 262146     nobody     600        1         
0x00000000 294915     nobody     600        1         
0x00000000 327684     nobody     600        1         
0x00000000 491525     nobody     600        1   

(5)ipcsの他のパラメーター

ipcs -m  查看系统共享内存信息
ipcs -q  查看系统消息队列信息
ipcs -s  查看系统信号量信息
ipcs -t  查看最新调用IPC资源的详细时间
ipcs -c  查看IPC的创建者和所有者
额外格式控制:
ipcs -l --human 以人类可以阅读的方式显示size

おすすめ

転載: blog.51cto.com/8355320/2542832