ワン:カーネルの概要
カーネルは、オペレーティングシステムの基本的な部分です。これは、多くのアプリケーションにアクセスが制限されているコンピュータのハードウェアへの安全なアクセスをソフトウェアの一部を提供することで、カーネルは、ハードウェアの動作のどのくらいの部分に何時間のプログラムで決めます。
分類は、シングルコアとデュアルコアとコアマイクロカーネルに分けることができます。厳密に必要なコアコンピュータシステムの一部ではない、話します。
カーネルとは何ですか?
カーネルは、オペレーティングシステムの中核です。第一層は、ハードウェアベースのソフトウェア展開されているオペレーティングシステムの最も基本的な機能を提供する、オペレーティングシステムがプロセス管理システム、メモリ、カーネルアーキテクチャ、デバイスドライバ、ファイルシステムおよびネットワークのために責任がある仕事のための基礎であり、決定システムのパフォーマンスと安定性。
スレッドとは何ですか?
スレッド:操作スケジューリングが可能なオペレーティングシステムの最小単位です。これは、プロセスの単位プロセスの実際の動作が含まれます。スレッドが単一の制御順次流れ、複数のスレッドによって複雑にすることができるプロセスでプロセスを指し、タスクの各スレッドの並列実行は、プログラム内の異なる実行パスは、スレッドと呼ばれます。スレッドは、内部制御シーケンスの処理です。すべてのプロセスは、実行の少なくとも一つのスレッドがあります。プロセスが実行中のスレッドは、基本的に、プロセスのアドレス空間で実行されています。Linuxシステムでは、CPUの目には、PCBは、従来の方法よりも軽量で見てきました。スレッドの実行フローを形成するために、各プロセスの実行フローにプロセスの仮想アドレス空間を通して、あなたは、ほとんどのリソースのプロセスを見ることができる資源の合理的配分。
プロセスとは何ですか?
最初のプロセスは、PID 1は、直接実行しているカーネルによってのみプロセスのLinuxのinitまたは全てのプロセスの親である、systemdにあるCentOSの通常れる
各プロセスにLinuxが実行している人の兆候、ユーザー缶が付いています独自のプロセスを制御します。異なる優先順位を割り当てるための独自のプロセスは、いつでも自分のプロセスで終了することができる
代わりに、これらに対処するために、「時間」の技術を使用しての、LinuxはCPU要求に複数のタスク(ジョブ)を処理することはできません仕事の依頼
のinitまたはにsystemdを除くが、他のプロセスが親プロセスによって作成された、あること、各プロセスが親プロセスを持っている(PPID)
2:ビューシステムリソース
1.レビュー現在のすべてのシステムの制限値
コマンドます。ulimit -a
コア・ファイル・サイズ(ブロック、-c)0
セグメントサイズ(キロバイト、-d)限定されないが、
スケジューリング優先度0
のファイルサイズ(ブロック、-f)無制限
ホールド信号(-i)7190
最大ロックメモリー(KB 、-l)64
最大メモリサイズ(バイト、-m)が限定されるものではなく、
開いているファイル(-n)1024に
パイプサイズ(512バイト、-p)。8
POSIXメッセージキュー(バイト、-q)819200
リアルタイム優先順位0
スタックサイズ(バイト、-s)8192
CPU時間(秒、-t)無制限の
最大ユーザ・プロセス(-u)7190
の仮想メモリ(KB、-v)無制限の
無制限のファイルロック(-x)
2.レビュー開いているファイルの数(1024年限りのLinuxシステムのデフォルト)も一時的に(再起動せずに)変更した状態で、ユーザ、コマンドパラメータを後で追加することができます。ulimit -n 65535
コマンドます。ulimit -n
3. Linuxのシステム・レベルの最大オープンファイル制限を確認してください
コマンド:猫を/ proc / sys / fs /ファイルマックス
4.ulimitの使用オプション
現在のリソース制限のセットを表示-a
-c <コア最大ファイル>ブロック単位で、最大コアファイルを設定します
KBで-d <セクションデータブロックサイズ>番組データの最大断面積、
最大ファイルは、ブロック単位で、<ファイルサイズ>シェル-f確立することができます
管理者が制限セットの下にあるハードリミットを設定する-Hリソース
KBで-m <メモリサイズ>指定メモリの上限、
-n <ファイルの数>を指定し、同時にファイルの数を開きます
-pバイトの<バッファサイズ>指定パイプのバッファのサイズ、512のユニット
-s <スタックサイズは> KBに、スタックの上限を指定します
弾力性の-Sセットのリソース制限
-t <CPU時間が>、CPU時間の上限を指定秒
ユーザーが開くことができ、プログラム番号-u <プログラム番号>
-v <仮想メモリのサイズは> KBに、最大仮想メモリを使用することができる指定します
3:システムリソースの制限は、(root権限で)設定されています
コマンド:vimの/etc/security/limits.confを
これらのいくつかの末尾に以下を追加します。
*ソフト65535 NOFILE
65535 *ハードNOFILE
65535 *ソフトNPROC
ハードNPROC 65535 *
知識の拡大:
プロセスの最大数を表しnoproc
開いているファイルのNOFILE代わっ最大数
*すべてのユーザーを変更するには限界です
コマンド:vimの/etc/security/limits.d/20-nproc.conf
次のパラメータを変更します。
#*ソフトNPROC 65535
#rootソフトNPROC無制限
*ソフトNPROC 65535
*ハードNPROC 65535
オリジナルのコメント、新しい追加
次に、コマンドの再起動、根およびスレッドの一般ユーザを再起動し、開いているファイルの最大数は65535です
再起動後に実行を表示するためにはulimit -aコマンド
コマンドます。ulimit -a
本番環境場合は、以下を追加します
コマンド:vimの/etc/security/limits.confを
* soft core unlimit
* hard core unlimit
* soft fsize unlimited
* hard fsize unlimited
* soft data unlimited
* hard data unlimited
* soft nproc 65535
* hard nproc 63535
* soft stack unlimited
* hard stack unlimited
* soft nofile 409600
* hard nofile 409600
四:内核优化
命令:cat /etc/sysctl.conf
打开内核配置文件
命令:vim /etc/sysctl.d/99-sysctl.conf
将以下配置输入进去:
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
# 关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
关闭sysrq功能
kernel.sysrq = 0
#core文件名中添加pid作为扩展名
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536
#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
#timewait的数量,默认180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans = 3276800
#未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries = 1
#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries = 1
#启用timewait 快速回收
net.ipv4.tcp_tw_recycle = 1
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
net.ipv4.tcp_keepalive_time = 30
#允许系统打开的端口范围
net.ipv4.ip_local_port_range = 1024 65000
#修改防火墙表大小,默认65536
net.netfilter.nf_conntrack_max=655350
net.netfilter.nf_conntrack_tcp_timeout_established=1200
# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
然后保存退出之后执行sysctl -p是参数生效,永久生效
命令:sysctl -p