Rumah > Artikel > Operasi dan penyelenggaraan > Bagaimana untuk mengoptimumkan parameter kernel linux
Sebagai pelayan WEB berprestasi tinggi, tidak cukup dengan hanya melaraskan parameter Nginx itu sendiri, kerana perkhidmatan Nginx bergantung pada sistem pengendalian berprestasi tinggi.
Berikut ialah beberapa kaedah pengoptimuman parameter kernel Linux biasa.
net.ipv4.tcp_max_tw_buckets
Untuk sambungan tcp, selepas pelayan dan pelanggan menyelesaikan komunikasi, status berubah untuk menunggu masa, jika pelayan tertentu sangat sibuk dan mempunyai bilangan sambungan yang sangat besar, maka bilangan menunggu masa akan menjadi lebih besar dan lebih besar.
Lagipun, ia juga akan menduduki jumlah sumber tertentu, jadi nilai maksimum harus ada Apabila nilai ini melebihi, sistem akan memadamkan sambungan paling awal, supaya ia sentiasa dikekalkan pada urutan magnitud.
Nilai ini ditentukan oleh parameter net.ipv4.tcp_max_tw_buckets.
Sistem CentOS7, anda boleh menggunakan sysctl -a |grep tw_buckets untuk melihat nilai lalainya ialah 32768.
Anda boleh menurunkannya dengan sewajarnya, seperti melaraskannya kepada 8000. Lagipun, terlalu banyak sambungan dalam keadaan ini. akan menyebabkan masalah menggunakan sumber.
Tetapi jangan laraskannya kepada puluhan atau ratusan, kerana sambungan tcp dalam keadaan ini juga berguna
Jika pelanggan yang sama berkomunikasi dengan pelayan sekali lagi, tidak perlu membuat sambungan baharu lagi. gunakan saluran lama ini untuk menjimatkan masa dan usaha.
net.ipv4.tcp_tw_recycle = 1
Fungsi parameter ini adalah untuk mengitar semula sambungan dengan pantas dalam masa menunggu negeri. Walaupun telah disebutkan di atas bahawa sistem akan memadamkan sambungan secara automatik dalam keadaan menunggu masa, bukankah lebih baik jika sambungan tersebut digunakan semula.
Jadi menetapkan parameter ini kepada 1 boleh mengitar semula sambungan dengan cepat dalam keadaan menunggu masa Ia perlu digunakan bersama dengan parameter berikut.
net.ipv4.tcp_tw_reuse = 1
Tetapkan parameter ini kepada 1 untuk menggunakan semula sambungan dalam keadaan menunggu masa. Untuk sambungan TCP baharu, ia mesti digunakan bersama dengan parameter di atas.
net.ipv4.tcp_syncookies = 1
Dalam tcp jabat tangan tiga hala, pelanggan memulakan syn permintaan kepada pelayan , selepas pelayan menerimanya, ia juga akan memulakan permintaan syn kepada klien dengan pengesahan ack
Jika klien memutuskan sambungan secara langsung daripada pelayan selepas menghantar permintaan dan tidak menerima permintaan yang dimulakan oleh pelayan. pelayan, pelayan akan dimulakan semula Cuba beberapa kali
Proses cuba semula ini akan berlangsung untuk satu tempoh masa (biasanya lebih tinggi daripada 30s Apabila bilangan sambungan dalam keadaan ini sangat besar, pelayan akan menggunakan banyak sumber). dan menyebabkan lumpuh
Normal Sambungan tidak boleh masuk. Tingkah laku separa sambungan berniat jahat ini sebenarnya dipanggil serangan banjir syn.
Tetapkan kepada 1 untuk mendayakan Kuki SYN, yang boleh mengelakkan serangan banjir syn yang disebutkan di atas.
Selepas menghidupkan parameter ini, selepas pelayan menerima ack klien, ia akan meminta klien membalas dengan nombor siri dalam masa yang singkat sebelum menghantar ack+syn kepada klien
Jika klien tidak dapat memberikannya nombor siri atau nombor siri yang diberikan tidak betul Ia dianggap bahawa pelanggan adalah haram, jadi ack+syn tidak akan dihantar kepada pelanggan, dan tidak akan ada percubaan semula yang terlibat.
net.ipv4.tcp_max_syn_backlog
Parameter ini mentakrifkan bilangan maksimum sambungan tcp separa bersambung yang sistem boleh terima. Pelanggan menghantar paket syn ke pelayan Selepas pelayan menerimanya, ia akan merekodkannya
Parameter ini menentukan bilangan sambungan sedemikian paling banyak. Dalam CentOS7, lalai ialah 256. Apabila terdapat serangan banjir syn, jika nilai ini terlalu kecil, ia akan menyebabkan pelayan ranap dengan mudah
Malah, pelayan tidak menggunakan terlalu banyak sumber (cpu, memori , dsb.) pada masa ini, supaya ia boleh dilaraskan dengan sewajarnya. Naikkannya, sebagai contoh, laraskannya kepada 30,000.
net.ipv4.tcp_syn_retries
Parameter ini terpakai kepada klien, yang mentakrifkan percubaan semula maksimum untuk memulakan syn Bilangan kali, lalai ialah 6, adalah disyorkan untuk menukarnya kepada 2.
net.ipv4.tcp_synack_retries
Parameter ini boleh digunakan pada pelayan, yang mentakrifkan bilangan maksimum syn +ack dimulakan Bilangan lalai percubaan semula ialah 5. Adalah disyorkan untuk menukarnya kepada 2 untuk mengelakkan serangan banjir syn dengan betul.
net.ipv4.ip_local_port_range
Parameter ini mentakrifkan julat port Port rizab lalai sistem ialah 1024 dan di bawah. Bahagian di atas adalah port tersuai. Parameter ini digunakan pada klien
Apabila klien mewujudkan sambungan dengan pelayan, contohnya, mengakses port 80 pelayan, klien secara rawak membuka port dan memulakan sambungan dengan pelayan
Parameter ini mentakrifkan skop port rawak. Lalai ialah 32768 61000, dan disyorkan untuk melaraskannya kepada 1025 61000.
net.ipv4.tcp_fin_timeout
Antara keadaan sambungan tcp, satu pada klien ialah keadaan FIN-WAIT-2, iaitu keadaan sebelum keadaan berubah kepada timewait.
Parameter ini mentakrifkan tempoh tamat masa status sambungan yang tidak termasuk dalam mana-mana proses Nilai lalai ialah 60 dan disyorkan untuk melaraskannya kepada 6.
net.ipv4.tcp_keepalive_time
Dalam status sambungan tcp, satu ialah status yang ditetapkan, dan hanya dalam status ini Barulah klien dan pelayan boleh berkomunikasi. Dalam keadaan biasa, apabila komunikasi selesai,
klien atau pelayan akan memberitahu pihak lain untuk menutup sambungan, dan status akan bertukar kepada menunggu masa Jika pelanggan tidak memberitahu pelayan,
dan pelayan tidak memberitahu klien sama ada Jika klien ditutup (contohnya, bahagian klien terputus), parameter ini diperlukan untuk menentukan.
Sebagai contoh, pelanggan telah diputuskan sambungan, tetapi status sambungan pada pelayan masih ditetapkan Untuk mengesahkan sama ada klien terputus sambungan, pelayan
perlu menghantar paket pengesanan sekali-sekala ke. sahkan. Semak untuk melihat sama ada pihak lain dalam talian. Masa ini ditentukan oleh parameter ini. Nilai lalainya ialah 7200 saat, dan disyorkan untuk menetapkannya kepada 30 saat.
net.ipv4.tcp_keepalive_intvl
Parameter ini bersama-sama dengan parameter di atas dan pelayan akan menjalankannya pada masa yang ditentukan Siasatan dimulakan untuk memeriksa sama ada pelanggan berada dalam talian Jika pelanggan tidak mengesahkan,
pelayan tidak boleh menentukan bahawa pihak lain tidak berada dalam talian pada masa ini, tetapi perlu mencuba beberapa kali. Parameter ini mentakrifkan masa untuk menghantar semula siasatan, iaitu, tempoh masa yang diperlukan untuk memulakan siasatan semula selepas pertama kali menemui masalah dengan pihak yang satu lagi.
Nilai lalai ialah 75 saat, yang boleh ditukar kepada 3 saat.
net.ipv4.tcp_keepalive_probes
Parameter ke-10 dan ke-11 menentukan bila untuk memulakan siasatan dan siasatan Berapa lama ia akan mengambil masa untuk memulakan pengesanan selepas kegagalan, tetapi ia tidak ditakrifkan berapa kali ia akan dikesan sebelum ia tamat.
Parameter ini mentakrifkan bilangan paket untuk memulakan pengesanan. Lalai ialah 9, dan disyorkan untuk menetapkannya kepada 2.
Tetapan dan contoh
Untuk melaraskan parameter kernel di bawah Linux, anda boleh terus mengedit fail konfigurasi /etc/sysctl.conf, dan kemudian laksanakan arahan sysctl -p untuk berkuat kuasa
Digabungkan dengan analisis di atas setiap Parameter kernel, contohnya adalah seperti berikut
6 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_max_tw_buckets = 8000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 30000 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_synack_retries = 2 net.ipv4.ip_local_port_range = 1025 61000 net.ipv4.tcp_keepalive_intvl = 3 net.ipv4.tcp_keepalive_probes = 2
Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan parameter kernel linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!