Di Linux, konkurensi tinggi ialah situasi "menghadapi sejumlah besar permintaan operasi dalam tempoh masa yang singkat" yang dihadapi semasa operasi sistem Ia berlaku terutamanya apabila sistem web secara intensif mengakses sejumlah besar permintaan dan menerima sejumlah besar permintaan; keadaan ini Kejadian akan menyebabkan sistem melakukan sejumlah besar operasi dalam tempoh ini, seperti permintaan untuk sumber, operasi pangkalan data, dll.
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Konsep Keseragaman Tinggi
1.1 Konsep Keselarasan Tinggi
Konsep Mata Wang Tinggi Ia adalah salah satu daripada faktor-faktor yang mesti dipertimbangkan dalam reka bentuk seni bina sistem teragih Internet Ia biasanya merujuk kepada memastikan sistem dapat mengendalikan banyak permintaan secara selari pada masa yang sama melalui reka bentuk.
Konkurensi tinggi (High Concurrency) ialah situasi di mana "sebilangan besar permintaan operasi ditemui dalam tempoh masa yang singkat" yang dihadapi semasa operasi sistem Ia berlaku terutamanya apabila sistem web menumpukan sejumlah besar akses dan menerima sejumlah besar permintaan ( Contohnya: situasi rampasan tiket 12306; acara Tmall Double Eleven). Berlakunya situasi ini akan menyebabkan sistem melakukan sejumlah besar operasi dalam tempoh ini, seperti permintaan untuk sumber, operasi pangkalan data, dll.
1.2 Penunjuk berkaitan konkurensi tinggi
Masa Tindak Balas (Masa Tindak Balas)Sistem bertindak balas terhadap permintaan masa. Sebagai contoh, sistem mengambil masa 200ms untuk memproses permintaan HTTP 200ms ini ialah masa tindak balas sistem -
Throughput (Throughput) Bilangan permintaan yang diproses setiap. unit masa -
Query Per Second QPS (Query Per Second)Bilangan permintaan respons sesaat. Dalam medan Internet, perbezaan antara penunjuk dan daya pemprosesan ini tidak begitu jelas -
Bilangan pengguna serentak (Kesepakatan Pengguna) Bilangan pengguna yang menggunakan biasa secara serentak fungsi sistem. Contohnya, dalam sistem pemesejan segera, volum dalam talian mewakili bilangan pengguna serentak sistem pada tahap tertentu-
1.3 Pengoptimuman konkurensi yang tinggi
- Hadkan bilangan maksimum fail terbuka dalam satu proses
- Parameter TCP Kernel
- Mekanisme peruntukan acara IO
2. Meningkatkan keupayaan penyelarasan sistem
2.1 Pengembangan menegak
Meningkatkan keupayaan pemprosesan bersendirian-
- Tingkatkan prestasi perkakasan bersendirian, contohnya: meningkatkan bilangan teras CPU seperti sebagai 32 teras, naik taraf kepada kad rangkaian yang lebih baik seperti 10G, dan naik taraf kepada pemacu keras yang lebih baik seperti SSD , kembangkan kapasiti cakera keras seperti 2T, kembangkan memori sistem seperti 128G
- Tingkatkan prestasi seni bina mesin tunggal, contohnya: gunakan Cache untuk mengurangkan masa IO, gunakan tak segerak untuk meningkatkan daya pemprosesan tunggal, gunakan struktur Data tanpa kunci untuk mengurangkan masa tindak balas
2.2 Pengembangan mendatar
Tambah kuantiti pelayan, prestasi sistem boleh dikembangkan secara linear -
2.3 Seni bina berlapis Internet biasa
(1) Lapisan pelanggan: panggilan biasa Pihak ialah pelayar atau aplikasi mudah alih APP
(2) Songsang lapisan proksi: pintu masuk sistem, proksi terbalik
(3) Lapisan aplikasi tapak: laksanakan logik aplikasi teras, kembalikan html atau json
(4) Lapisan perkhidmatan: Jika penservitan dilaksanakan, akan ada lapisan ini
(5) Lapisan cache data: Cache mempercepatkan akses kepada storan
(6 ) Lapisan pangkalan data: Storan data diperkukuh pangkalan data
2.4 Seni bina pengembangan mendatar
- Tahap pengembangan lapisan proksi terbalik
- Apabila nginx menjadi hambatan, anda hanya perlu menambah bilangan pelayan, menggunakan perkhidmatan nginx baharu dan menambah IP rangkaian luaran untuk mengembangkan prestasi lapisan proksi terbalik Secara teorinya, konkurensi tinggi tak terhingga
- dicapai melalui "DNS. polling": dns-server dikonfigurasikan dengan berbilang IP resolusi untuk nama domain dan setiap permintaan resolusi DNS mengakses dns-server , IP ini akan ditinjau dan dikembalikan
- Pengembangan mendatar bagi lapisan tapak
- dilaksanakan melalui "nginx". Dengan mengubah suai nginx.conf, anda boleh menyediakan berbilang hujung belakang web
- Apabila hujung belakang web menjadi halangan, cuma tambah bilangan pelayan dan tambahkan penggunaan perkhidmatan web dalam konfigurasi nginx Mengkonfigurasi bahagian belakang web baharu boleh mengembangkan prestasi lapisan tapak dan mencapai keselarasan tinggi yang tidak terhingga secara teorinya
- Peluasan mendatar lapisan perkhidmatan
- Dilaksanakan melalui "Kolam Sambungan Perkhidmatan"
- Apabila lapisan tapak memanggil pelayan RPC lapisan perkhidmatan hiliran melalui klien RPC, kumpulan sambungan akan mewujudkan berbilang sambungan dengan perkhidmatan hiliran apabila perkhidmatan menjadi hambatan, cuma tambah bilangan pelayan, gunakan perkhidmatan baharu dan wujudkan sambungan perkhidmatan hiliran baharu di RPC-klien untuk mengembangkan prestasi lapisan perkhidmatan dan mencapai hasil teori yang sangat tinggi pada
- Pengembangan mendatar lapisan data
Tiga pelayan Linux tunggal meningkatkan keselarasan
3.1 iptables berkaitan
-
Tutup firewall iptables dan halang kernel daripada memuatkan iptables modul
-
Hadkan bilangan maksimum fail terbuka untuk satu proses (bilangan maksimum lalai fail terbuka untuk satu proses ialah 1024)
ulimit –n 65535
Salin selepas log masuk
-
Ubah suai bilangan fail terbuka untuk pengguna dalam sistem Linux Had lembut dan had keras
vim /etc/security/limits.conf
* soft nofile 65535 #'*'表示修改所有用户的限制
* hard nofile 65535
Salin selepas log masuk
#用户完成系统登录后读取/etc/security/limits.conf文件
vim /etc/pam.d/login
sessionrequired /lib/security/pam_limits.so
Salin selepas log masuk
3.2 Parameter TCP kernel
Status TIME_WAIT
Selepas sambungan TCP diputuskan sambungan, ia akan kekal dalam keadaan TIME_WAIT untuk tempoh masa tertentu sebelum melepaskan port . Apabila terdapat terlalu banyak permintaan serentak, sejumlah besar sambungan dalam keadaan TIME_WAIT akan dijana Jika ia tidak dapat diputuskan dalam masa, sejumlah besar sumber port dan sumber pelayan akan diduduki
.
#查看TIME_WAIT状态连接
netstat -n | grep tcp | grep TIME_WAIT |wc -l
Salin selepas log masuk
# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies= 1 #表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse= 1 #表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle= 1 #表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout= 30 #修改系統默认的TIMEOUT 时间。
Salin selepas log masuk
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah maksud konkurensi tinggi dalam linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!