Récapitulatif des paramètres du noyau du système Oracle, des limites de ressources et des commandes liées à ipcs

One, paramètres du noyau Oracle

Le fichier de configuration des paramètres du noyau Oracle se trouve dans le chemin /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: Le nombre maximum de pages de mémoire partagée, qui fait référence au nombre maximum de segments de mémoire partagée que le système peut utiliser à la fois. La
taille de page de mémoire partagée Linux en unités de pages est de 4 Ko (la taille de page dans le système RedHat Linux est de 4096 ou 4 Ko, L'environnement réel est soumis au résultat de getconf PAGE_SIZE), la taille du segment de mémoire partagée est un multiple entier de la taille de page de mémoire partagée. La taille maximale d'un segment de mémoire partagée peut être définie sur 16 Go et le nombre correspondant de pages de mémoire partagée requis est de 16 Go / 4 Ko = 16777216 Ko / 4 Ko = 4194304 (pages).
La valeur du paramètre est optimisée en fonction de la taille de la mémoire système.

 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: valeur maximale d'un seul segment de mémoire partagée, en octets.
Shmmax est l'un des paramètres les plus importants des paramètres de base. Il est utilisé pour définir la valeur maximale d'un seul segment de mémoire partagée. Le paramètre shmmax doit être suffisamment grand et supérieur à La valeur de sga-max-size dans Oracle, sinon cela entraînera une dégradation des performances d'Oracle, généralement un système d'exploitation 32 bits, directement défini sur la mémoire maximale prise en charge par le système, le système d'exploitation 64 bits peut être défini supérieur à la valeur de sga-max-size, en général La mémoire partagée maximale peut être définie sur la moitié de la mémoire physique. Si la mémoire physique est de 1 Go, la mémoire partagée maximale peut être définie sur 512 1024 1024 = 536870912; et ainsi de suite, il n'est pas recommandé que la mémoire partagée maximale sur redhat dépasse 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: Le nombre minimum de segments de mémoire partagée
oracle définit la valeur par défaut sur 4096, ce qui est généralement suffisant et n'a pas besoin d'être ajusté

4. Kernel.sem: correspondant à 4 valeurs
SEMMSL, SEMMNS, SEMOPM, SEMMNI

(1) SEMMSL: nombre maximal de signaux par ensemble de signaux.
Lorsque le paramètre PROCESSES du fichier de paramètres d'initialisation de la base de données oracle est volumineux, vous devez ajuster le paramètre SEMAPHORES. SEMMSL doit être défini sur le paramètre PROCESSES le plus grand de chaque instance du serveur +10, par exemple lorsque Lorsque le plus grand paramètre PROCESSES est 5000, SEMMSL doit être défini sur 5010. Oracle recommande de définir la valeur de SEMMSL sur au moins 100.
Afficher la commande du nombre maximal de connexions d'Oracle:

select * from v$license;

(2) SEMMNS: Utilisé pour contrôler le nombre maximum de signaux (pas d'ensembles de signaux) dans tout le système Linux.
Oracle recommande que SEMMNS soit défini sur: la somme des paramètres d'instance PROCESSES de chaque base de données du système, plus le double de la valeur PROCESSES maximale, et enfin, ajouter 10 à chacun en fonction du nombre de bases de données Oracle dans le système.
Le paramètre SEMMNS doit être défini sur SEMMSLSEMMNI, SEMMSL est 5010 et le paramètre SEMMNS doit être (5010128) = 641280

(3) SEMOPM: les paramètres du noyau sont utilisés pour contrôler le nombre d'opérations de signal qui peuvent être effectuées pour chaque appel système semop. L'appel système semop (fonction) fournit la fonction d'utiliser un appel système semop pour effectuer plusieurs opérations de signal. Un ensemble de signaux peut avoir le nombre maximal de signaux SEMMSL dans chaque ensemble de signaux, il est donc recommandé de définir SEMOPM égal à SEMMSL, et Oracle recommande que la valeur de SEMOPM ne soit pas inférieure à 100.

(4) SEMMNI: Le paramètre noyau est utilisé pour contrôler le nombre maximum de jeux de signaux dans tout le système Linux.
Oracle recommande de définir la valeur de SEMMNI sur au moins 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; 

Faites attention à la différence entre les différents paramètres de
la version: La version avant oracle11gR2: sessions = processus1.1 + 5
La version après oracle11gR2: sessions = processus1.5 + 22

5. fs.aio-max-nr = 1048576
fait référence à la taille de demande d'E / S asynchrone maximale autorisée par le système. Le paramètre par défaut d'Oracle est 1M, soit 1048576, et n'a généralement pas besoin d'être modifié.
6. fs.file-max = 6815744
fs.file-max signifie que le système peut être ouvert Le
paramètre recommandé pour le nombre maximum de descripteurs de fichiers : fs.file-max = 512processes = 6.51024 * 1024 = 6.5M

Deux autres paramètres du noyau

(1) Les paramètres relatifs au noyau TCP sont tous sous / proc / sys / net / ipv4, avec les options suivantes

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) Paramètres du noyau liés à ARP, explication de la limite de cache 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) Le nombre de connexions liées à 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) À propos des paramètres liés au réseau

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

La fonction note les paramètres correspondants:
net.ipv4.ip_local_port_range indique la plage de ports IPv4 que l'application peut utiliser. La plage de ports recommandée avant oracle10g est 1024 65000 et la plage de ports recommandée pour oracle11g est 9000 65500

net.core.rmem_default représente la valeur par défaut de la taille du tampon de réception du socket oracle recommande de la définir sur 265K ou 262144

net.core.rmem_max indique la taille maximale du tampon de réception de socket oracle10g et les versions précédentes sont recommandées pour être définies sur 256k ou 262144 oracle11g sont recommandées pour être définies sur 4M ou 4194304

net.core.wmem_default représente la valeur par défaut de la taille du tampon d'envoi de socket oracle recommande de la définir sur 265K ou 262144

net.core.wmem_max représente la taille maximale de la taille du tampon d'envoi de socket oracle10g et versions précédentes, il est recommandé de le définir sur 256k ou 262144 oracle11g, il est recommandé de le définir sur 1M ou 1048576

net.ipv4.tcp_tw_reuse permet la réutilisation. Autoriser la réutilisation des sockets TIME-WAIT pour les nouvelles connexions TCP

net.ipv4.tcp_tw_recycle Activer le temps d'attente du recyclage rapide

net.ipv4.tcp_syncookies active les cookies SYN, lorsque la file d'attente SYN déborde, permet aux cookies de traiter

net.core.somaxconn Dans l'application web, le backlog de la fonction listen limitera le net.core.somaxconn du paramètre kernel à 128 par défaut, tandis que le NGXLISTENBACKLOG défini par nginx par défaut à 511, il est donc nécessaire d'ajuster cette valeur

net.core.netdev_max_backlog Le nombre maximal de paquets de données qui peuvent être envoyés à la file d'attente lorsque la vitesse à laquelle chaque interface réseau reçoit des paquets est plus rapide que la vitesse à laquelle le noyau traite ces paquets

net.ipv4.tcp_max_orphans Nombre maximal de sockets TCP dans le système qui ne sont associés à aucun descripteur de fichier utilisateur. Si ce nombre est dépassé, la connexion sera réinitialisée immédiatement et un message d'avertissement sera imprimé. Cette limite est juste pour éviter un simple DoS ***, vous ne pouvez pas trop vous y fier ou réduire artificiellement cette valeur, vous devez augmenter cette valeur (si la mémoire est augmentée)

net.ipv4.tcp_max_syn_backlog enregistre le nombre maximum de demandes de connexion qui n'ont pas encore reçu de confirmation client. Pour les systèmes avec une mémoire de 128 Mo, la valeur par défaut est 1024 et pour les systèmes avec une petite mémoire, elle est de 128

L'horodatage net.ipv4.tcp_timestamps peut éviter l'enroulement du numéro de série. Une liaison 1 Gbps rencontrera certainement le numéro de série utilisé auparavant. L'horodatage permet au noyau d'accepter de tels paquets "anormaux". Il doit être désactivé ici

net.ipv4.tcp_synack_retries Afin d'ouvrir la connexion de l'extrémité opposée, le noyau doit envoyer un SYN avec un ACK en réponse au SYN précédent. Il s'agit de la deuxième poignée de main de la soi-disant poignée de main à trois. Ce paramètre détermine le nombre de paquets SYN + ACK envoyés avant que le noyau abandonne la connexion

net.ipv4.tcp_syn_retries Le nombre de paquets SYN envoyés avant que le noyau renonce à établir une connexion

net.ipv4.tcp_fin_timeout Si le socket est fermé par la requête locale, ce paramètre détermine combien de temps il restera dans l'état FIN-WAIT-2. Le pair peut faire des erreurs et ne jamais fermer la connexion, ou même se bloquer de manière inattendue. La valeur par défaut est de 60 secondes. La valeur habituelle du noyau 2.2 est de 180 secondes, 3 vous pouvez appuyer sur ce paramètre, mais rappelez-vous que même si votre machine est un serveur WEB légèrement chargé, il y a un risque de débordement de mémoire en raison d'un grand nombre de sockets morts, FIN -WAIT-2 est moins dangereux que FIN-WAIT-1, car il ne peut consommer que 1,5 Ko de mémoire, mais leur durée de vie est plus longue

net.ipv4.tcp_keepalive_time Lorsque keepalive est activé, à quelle fréquence TCP envoie des messages keepalive. La valeur par défaut est de 2 heures

Après avoir configuré ces derniers, utilisez la commande suivante pour recharger pour prendre effet

sysctl -p

3. À propos des restrictions de ressources

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

1. La différence entre «doux» et «dur»

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

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

Par exemple: soft est défini sur 2048, hard est défini sur 16384, vous pouvez l'utiliser avec désinvolture lorsque le numéro utilisé est compris entre 1 et 2048, lorsque le numéro utilisé est compris entre 2048 et 16384, un message d'avertissement apparaîtra, s'il est supérieur à 16384, une erreur sera signalée.

2. La différence entre "nproc" et "nofile"

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

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

3. Modifiez la configuration du système et
ouvrez /etc/security/limits.conf (certains systèmes se trouvent dans /etc/security/limits.d/90-nproc.conf)

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

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

4. Remarques

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

Quatre, à propos de la commande ipcs pour afficher la mémoire partagée, la file d'attente de messages, l'utilisation du sémaphore

(1) La commande ipcs -l peut afficher les informations de limite système de chaque ressource, et vous pouvez voir le jeu de sémaphores maximum autorisé par le système, la limite du nombre de sémaphores et le nombre maximum de messages dans la file d'attente de messages.

[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) La commande ipcs -u peut afficher les informations récapitulatives d'utilisation de chaque ressource, dans lesquelles vous pouvez voir le nombre d'ensembles de sémaphores utilisés, le nombre de sémaphores et le nombre total de messages actuellement utilisés dans la file d'attente de messages, et l'espace occupé Nombre d'octets

[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) La commande ipcs -p peut obtenir des messages entre les processus liés à la mémoire partagée et aux files d'attente de messages

[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 Afficher toutes les informations sur la mémoire partagée, la file d'attente de messages et le sémaphore actuellement utilisés

[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) Autres paramètres d'ipcs

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

Je suppose que tu aimes

Origine blog.51cto.com/8355320/2542832
conseillé
Classement