天天看點

Linux調優+Tomcat調優,超級幹貨,一定珍藏

作者:架構師尼恩

▌說在前面:

在40歲老架構師尼恩的讀者社群(50+)中,很多小夥伴拿不到offer,或者拿不到好的offer。

尼恩經常給大家 優化項目,優化履歷,挖掘技術亮點。

在指導履歷的過程中, 線上問題排查、Java 調優是一項很重要的指導。

對于架構師、進階開發來說, 調優和線上問題排查是 核心内容, 更是内功中的内功。

尼恩團隊結合資深架構經驗和行業案例,給大家梳理一個系列的《Java 調優聖經》PDF,包括本文在内規劃的6個部分:

(1) 調優聖經1:零基礎精通Jmeter分布式壓測,10Wqps+壓測實操 (已經完成)

(2) 調優聖經2:從70s到20ms,一次3500倍性能優化實戰,方案人人可用 (已經完成)

(3) 調優聖經3:如何做mysql調優?絕命7招讓慢SQL調優100倍,實作你的Mysql調優自由 (已經完成)

(4) 調優聖經4:SpringBoot假死,十萬火急,怎麼救火? (已經完成)

(5) 調優聖經5:零基礎精通JVM調優實操,實作JVM自由 (已經完成)

(6) 調優聖經6:零基礎精通Linux、Tomcat調優實操,實作基礎設施調優自由 (本文)

以上的多篇文章,在 公号【技術自由圈】 發。

▌本文目錄:

- 說在前面
- 引言
- Linux伺服器調優實戰
  - 監控伺服器性能
  - 核心參數調優
    - 1. 了解常用的核心參數及其作用
    - 2. 優化政策
  - 檔案系統優化
    - 1. 選擇合适的檔案系統類型
    - 2. 調整檔案系統參數以提升性能
  - 網絡優化
    - 1. 調整網絡參數以提高網絡性能
    - 2. TCP參數調優
    - 3. 使用高性能網絡協定如RDMA
  - 記憶體管理和交換空間
    - 1. 了解Linux記憶體管理機制
    - 2. 調整記憶體參數以提升性能
    - 3. 優化交換空間的使用
- Spring Boot内置Tomcat調優實戰
  - 調整Spring Boot Tomcat參數
    - 1. 調整連接配接器參數以優化網絡性能
    - 2. 調整線程池參數以提高并發處理能力
    - 3. 上傳檔案配置優化
  - 緩存和會話管理優化
  - Spring Boot Tomcat安全性優化
  - Spring Boot Tomcat日志管理
- 小結
- 技術自由的實作路徑 PDF           

▌引言:

在當今的軟體開發領域中,Spring Boot已經成為建構高效、可擴充和靈活的Java應用程式的首選架構。然而,當我們的Spring Boot項目部署在Linux伺服器上時,有時我們可能會面臨性能不足的挑戰。這種性能瓶頸可能會導緻延遲增加、響應時間變慢甚至系統崩潰,進而影響使用者體驗和業務流程。

為了克服這些性能問題,我們需要深入了解Linux伺服器和Spring Boot内置的Tomcat伺服器,并學習如何對它們進行調優。

Linux伺服器作為Spring Boot項目的托管環境,其配置和優化對于確定系統的穩定性和性能至關重要。

而Spring Boot内置的Tomcat伺服器則負責處理HTTP請求和響應,它的配置和優化可以直接影響到系統的并發處理能力和響應時間。

通過對Linux伺服器和Spring Boot内置的Tomcat進行調優,我們可以最大限度地利用系統資源,提高系統的性能和吞吐量,同時增強系統的穩定性和可靠性。

優化Linux伺服器可以涉及核心參數調整、檔案系統優化、網絡配置優化以及記憶體管理等方面。

而在調優Spring Boot内置的Tomcat時,我們可以調整JVM參數、優化連接配接器和線程池配置、進行緩存和會話管理優化,以及加強安全性和日志管理等。

本文将深入探讨Linux伺服器和Spring Boot内置的Tomcat調優的實操内容。

我們将介紹常用的調優技術和政策,以及實際操作的步驟和示例。通過這些調優實操,您将能夠充分發揮Linux伺服器和Spring Boot内置的Tomcat的潛力,滿足項目的性能需求,提升使用者體驗,并確定系統在高負載和大流量的情況下依然穩定可靠。

讓我們一起深入學習和實踐,掌握Linux伺服器和Spring Boot内置的Tomcat調優的關鍵技術,為我們的應用程式打造一個高效、可靠且具有良好性能的部署環境。

▌Linux伺服器調優實戰:

Linux作為一種強大而穩定的作業系統,廣泛應用于伺服器環境中。然而,在部署和運作Spring Boot項目時,我們可能會面臨一些性能方面的挑戰,這可能影響到應用程式的響應時間和整體性能。是以,對Linux伺服器進行調優是至關重要的,它可以幫助我們最大限度地提升系統的性能、可靠性和穩定性。

本章将重點介紹如何在CentOS作業系統上進行Linux伺服器調優。CentOS是一種基于Linux的開源作業系統,具有廣泛的應用和強大的社群支援。通過針對CentOS進行調優,我們将學習如何最大限度地利用系統資源,優化核心參數、檔案系統、網絡和記憶體管理,以提升伺服器的性能。

▌監控伺服器性能

在Linux伺服器調優中,監控系統的性能是非常重要的一步。通過監控工具,我們可以實時了解伺服器的資源利用情況,如CPU、記憶體、磁盤和網絡,以便及時發現性能瓶頸并進行優化。本節将介紹如何安裝和配置監控工具,并展示如何監控系統資源并分析監控資料以發現性能瓶頸。

▌1. 安裝和配置監控工具

首先,我們需要安裝一個強大而靈活的監控工具來監控伺服器性能。在本執行個體中,我們将使用常見的工具"top"和"Sar"。

  • 安裝procps工具包:

procps軟體包包含監視和終止系統程序的程式。它通過/proc目錄搜集程序的資訊.

安裝該軟體包将

◆1)安裝下列程式

  • free顯示系統中可用的和已經使用的實體記憶體和交換空間,以及核心使用的共享記憶體和緩沖區。
  • kill向程序發信号。
  • pgrep 按照名字或者其他屬性查找程序。
  • pkill 按照名字或者其他屬性結束程序。
  • pmap 報告指定程序的記憶體圖。
  • ps 顯示一個目前程序的快照。
  • skill 向符合某個條件的程序發出信号。
  • snice 改變符合某個條件程序的排程優先級。
  • sysctl系統運作時改變核心的參數。
  • tload 在指定的tty終端上顯示系統目前平均負載的示意圖。
  • top實時觀察程序的活動情況。
  • uptime 顯示系統運作了多長時間,有多少使用者登陸,系統的負載情況。
  • vmstat報告虛拟記憶體狀态。包括程序、記憶體、分頁、塊裝置的讀寫、中斷和CPU的活 動。
  • w 顯示目前登入的使用者資訊,以及他們的程序。
  • watch 重複運作某個指令,滿屏顯示其輸出。
  • libproc包含本軟體包中大多數程式都要使用的函數。

◆2)安裝下列庫檔案

libproc.so*

安裝指令和過程如下:

[root@cdh1 ~]# sudo yum install -y procps
Last metadata expiration check: 3:12:06 ago on Thu 29 Jun 2023 12:32:43 PM CST.
Package procps-ng-3.3.15-1.el8.x86_64 is already installed.
Dependencies resolved.
==============================================================================================
 Package                Architecture        Version                   Repository         Size
==============================================================================================
Upgrading:
 procps-ng              x86_64              3.3.15-6.el8              base              329 k

Transaction Summary
==============================================================================================
Upgrade  1 Package

Total download size: 329 k
Downloading Packages:
procps-ng-3.3.15-6.el8.x86_64.rpm                             222 kB/s | 329 kB     00:01
----------------------------------------------------------------------------------------------
Total                                                         222 kB/s | 329 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                      1/1
  Upgrading        : procps-ng-3.3.15-6.el8.x86_64                                        1/2
  Cleanup          : procps-ng-3.3.15-1.el8.x86_64                                        2/2
  Running scriptlet: procps-ng-3.3.15-1.el8.x86_64                                        2/2
  Verifying        : procps-ng-3.3.15-6.el8.x86_64                                        1/2
  Verifying        : procps-ng-3.3.15-1.el8.x86_64                                        2/2

Upgraded:
  procps-ng-3.3.15-6.el8.x86_64

Complete!           
  • 安裝sysstat工具包:

sysstat 是 Linux 系統中的常用工具包。它的主要用途是觀察服務負載,比如CPU和記憶體的占用率、網絡的使用率以及磁盤寫入和讀取速度等。

  • sysstat 工具包中包含兩類工具:
  • 即時檢視工具:iostat、mpstat、sar
  • 累計統計工具:sar

也就是說,sar 具有這兩種功能。是以,sar 是 sysstat 中的核心工具。 為了實作 sar 的累計統計,系統必須周期地記錄當時的資訊,這是通過調用 /usr/lib/sa/ 中的三個工具實作的:

  • sa1 :收集并存儲每天系統動态資訊到一個二進制的檔案中,用作 sadc 的前端程式
  • sa2 :收集每天的系統活躍資訊寫入總結性的報告,用作 sar 的前端程式
  • sadc :系統動态資料收集工具,收集的資料被寫入一個二進制的檔案中,它被用作 sar 工具的後端

安裝指令及過程如下:

[root@cdh1 ~]# sudo yum install -y sysstat
Last metadata expiration check: 3:15:03 ago on Thu 29 Jun 2023 12:32:43 PM CST.
Dependencies resolved.
====================================================================================================================================
 Package                        Architecture          Version                                        Repository                Size
====================================================================================================================================
Installing:
 sysstat                        x86_64                11.7.3-6.el8                                   AppStream                425 k
Installing dependencies:
 lm_sensors-libs                x86_64                3.4.0-23.20180522git70f7e08.el8                base                      59 k

Transaction Summary
====================================================================================================================================
Install  2 Packages

Total download size: 484 k
Installed size: 1.5 M
Downloading Packages:
(1/2): lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64.rpm                                   138 kB/s |  59 kB     00:00
(2/2): sysstat-11.7.3-6.el8.x86_64.rpm                                                              220 kB/s | 425 kB     00:01
------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                               250 kB/s | 484 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                            1/1
  Installing       : lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64                                                     1/2
  Running scriptlet: lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64                                                     1/2
  Installing       : sysstat-11.7.3-6.el8.x86_64                                                                                2/2
  Running scriptlet: sysstat-11.7.3-6.el8.x86_64                                                                                2/2
  Verifying        : lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64                                                     1/2
  Verifying        : sysstat-11.7.3-6.el8.x86_64                                                                                2/2

Installed:
  lm_sensors-libs-3.4.0-23.20180522git70f7e08.el8.x86_64                         sysstat-11.7.3-6.el8.x86_64

Complete!           

▌2. 監控系統資源

接下來,我們将使用安裝的監控工具來監控系統資源。使用以下指令來監控CPU、記憶體、磁盤和網絡的使用情況:

  • 監控CPU使用率:
[root@cdh1 ~]# top
top - 15:48:20 up  4:10,  1 user,  load average: 0.35, 0.18, 0.12
Tasks: 122 total,   1 running, 121 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.2 id,  0.2 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   7810.2 total,   4942.9 free,   1856.0 used,   1011.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   5693.3 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   4079 root      20   0 3034096 315292  18328 S   0.7   3.9   1:10.41 java
   1307 root      20   0 3641916 684908  24092 S   0.3   8.6   1:11.22 java
   6772 root      20   0 3031844 307588  19560 S   0.3   3.8   0:52.58 java
      1 root      20   0  179924  14200   9096 S   0.0   0.2   0:01.40 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
      9 root      20   0       0      0      0 S   0.0   0.0   0:00.03 ksoftirqd/0
     10 root      20   0       0      0      0 I   0.0   0.0   0:01.33 rcu_sched
     11 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
     12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdog/0
     13 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     15 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdog/1           

在top指令的輸出中,可以看到各個程序的CPU使用率、負載情況、系統的記憶體使用情況,包括已用記憶體、空閑記憶體、緩存和交換空間等。

  • 監控磁盤使用情況:
[root@cdh1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G   17M  3.8G   1% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2        50G   15G   36G  29% /
vagrant         401G   99G  303G  25% /vagrant
tmpfs           782M     0  782M   0% /run/user/0
overlay          50G   15G   36G  29% /var/lib/docker/overlay2/e69110c0d30fa539dfe2cadf20b9361d37f23b3ff93a650982f8cc06e8b8b613/merged
overlay          50G   15G   36G  29% /var/lib/docker/overlay2/4478bfab332f0a954024ffbee69ced83c67f8fef26784b634cf1e54aa1284890/merged
overlay          50G   15G   36G  29% /var/lib/docker/overlay2/46d554315310d2fa8e964fceb621861dc47f06c28cd4aa26972932863885e1c9/merged
shm              64M     0   64M   0% /var/lib/docker/containers/1d00f3ade2b64c4f014bb84c2f8b1bd2a3d879941b2df673008c7594cda4579c/mounts/shm
shm              64M     0   64M   0% /var/lib/docker/containers/11b6e036050c11278ec0344c974bc2caace0df59481636d23f6c97befb030048/mounts/shm
shm              64M     0   64M   0% /var/lib/docker/containers/129a46feed7737ad6a804ec2b27b31f88c05b99563391aa941ff91b247c91d84/mounts/shm           

該指令将顯示伺服器上各個磁盤分區的使用情況,包括已用空間、可用空間和挂載點等。

  • 監控網絡流量:
[root@cdh1 ~]# sar -n DEV 1
Linux 4.18.0-193.19.1.el8_2.x86_64 (cdh1)       06/29/2023      _x86_64_        (2 CPU)

03:49:52 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
03:49:53 PM      eth1      1.00      1.00      0.06      0.16      0.00      0.00      0.00      0.00
03:49:53 PM br-b4b24a4b375b      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
03:49:53 PM veth5731f9f      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00           

此指令将顯示每秒鐘的網絡接口流量,包括接收和發送的資料量。

▌3. 分析監控資料并發現性能瓶頸

一旦我們開始監控伺服器性能,我們需要分析監控資料以發現性能瓶頸。

以下是一些常見的性能瓶頸名額和分析方法:

  • CPU使用率高:可能存在CPU密集型任務,可以通過優化算法或增加CPU資源來解決。
  • 記憶體不足:可能導緻交換空間過多,影響性能。可以考慮增加記憶體或優化記憶體使用。
  • 磁盤IO瓶頸:可能導緻IO延遲增加,可以通過使用SSD、優化檔案系統或調整IO排程器來解決。
  • 網絡流量過大:可能導緻網絡擁塞或延遲增加,可以考慮增加帶寬或優化網絡配置。

通過對監控資料進行持續分析,我們可以定位性能瓶頸并采取相應的優化措施來改善伺服器的性能。

通過本節的實操,可以了解到如何安裝和配置監控工具,并使用它們來監控Linux伺服器的性能。您還将了解如何分析監控資料以發現性能瓶頸,為後續的調優工作奠定基礎。記住,監控是持續進行的過程,可以幫助您及時發現問題并采取相應的措施來提升伺服器的性能和穩定性。

尼恩提示:以上内容比較複雜,而且非常重要。如何把以上内容搞清楚? 可以看本文的配套視訊《調優聖經,老架構師帶實作履歷脫胎換骨》。

如果想把調優聖經寫入履歷,可以找老架構師尼恩提供履歷輔導,保證履歷金光閃閃、天衣無縫。

▌核心參數調優

在Linux伺服器調優中,調整核心參數是提升系統性能和穩定性的關鍵步驟。通過優化核心參數,我們可以對系統的行為和資源管理進行精細調控,以最大限度地利用硬體資源并提升系統的性能。

本節将介紹常用的核心參數及其作用,并提供一些常見的核心參數調優政策,幫助您優化系統性能。

▌1. 了解常用的核心參數及其作用

在調優核心參數之前,我們首先需要了解一些常用的核心參數及其作用。以下是一些常見的核心參數:

  • vm.swappiness:控制系統在記憶體不足時交換空間的使用程度。
  • vm.dirty_ratio和vm.dirty_background_ratio:控制髒頁面在記憶體中的比例。
  • net.core.somaxconn:設定TCP監聽隊列的最大長度。
  • net.ipv4.tcp_fin_timeout:控制TCP連接配接關閉後的等待時間。
  • fs.file-max:設定系統可打開檔案描述符的最大數量。

▌2. 優化政策

◆2.1 記憶體優化

  • 調整vm.swappiness參數:減少交換空間的使用,将其值設定為較低的數值,如10。
[root@cdh1 ~]# echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
vm.swappiness=10
[root@cdh1 ~]# sudo sysctl -p
fs.nr_open = 1500000
fs.file-max = 1500000
vm.swappiness = 1
vm.max_map_count = 262144
net.core.somaxconn = 32768
vm.swappiness = 10
fs.file-max = 100000
vm.swappiness = 10           
  • 增加vm.dirty_ratio和vm.dirty_background_ratio的值:這會減少寫回磁盤的頻率,提高性能。
[root@cdh1 ~]# echo "vm.dirty_ratio=80" | sudo tee -a /etc/sysctl.conf
vm.dirty_ratio=80
[root@cdh1 ~]# echo "vm.dirty_background_ratio=10" | sudo tee -a /etc/sysctl.conf
vm.dirty_background_ratio=10
[root@cdh1 ~]# sudo sysctl -p
fs.nr_open = 1500000
fs.file-max = 1500000
vm.swappiness = 1
vm.max_map_count = 262144
net.core.somaxconn = 32768
vm.swappiness = 10
fs.file-max = 100000
vm.swappiness = 10
vm.dirty_ratio = 80
vm.dirty_background_ratio = 10           

◆2.2 網絡優化

  • 增加net.core.somaxconn參數的值:增加TCP監聽隊列的長度,以處理更多的并發連接配接請求。
[root@cdh1 ~]# echo "net.core.somaxconn=65535" | sudo tee -a /etc/sysctl.conf
net.core.somaxconn=65535
[root@cdh1 ~]# sudo sysctl -p
fs.nr_open = 1500000
fs.file-max = 1500000
vm.swappiness = 1
vm.max_map_count = 262144
net.core.somaxconn = 32768
vm.swappiness = 10
fs.file-max = 100000
vm.swappiness = 10
vm.dirty_ratio = 80
vm.dirty_background_ratio = 10
net.core.somaxconn = 65535           
  • 調整net.ipv4.tcp_fin_timeout參數:縮短TCP連接配接關閉後的等待時間,釋放連接配接資源的速度更快。
[root@cdh1 ~]# echo "net.ipv4.tcp_fin_timeout=15" | sudo tee -a /etc/sysctl.conf
net.ipv4.tcp_fin_timeout=15
[root@cdh1 ~]# sudo sysctl -p
fs.nr_open = 1500000
fs.file-max = 1500000
vm.swappiness = 1
vm.max_map_count = 262144
net.core.somaxconn = 32768
vm.swappiness = 10
fs.file-max = 100000
vm.swappiness = 10
vm.dirty_ratio = 80
vm.dirty_background_ratio = 10
net.core.somaxconn = 65535
net.ipv4.tcp_fin_timeout = 15           

◆2.3 檔案系統優化

  • 增加fs.file-max參數的值:增加可打開檔案描述符的數量,以支援更多的并發連接配接和檔案操作。
[root@cdh1 ~]# echo "fs.file-max=100000" | sudo tee -a /etc/sysctl.conf
fs.file-max=100000
[root@cdh1 ~]# sudo sysctl -p
fs.nr_open = 1500000
fs.file-max = 1500000
vm.swappiness = 1
vm.max_map_count = 262144
net.core.somaxconn = 32768
vm.swappiness = 10
fs.file-max = 100000
vm.swappiness = 10
vm.dirty_ratio = 80
vm.dirty_background_ratio = 10
net.core.somaxconn = 65535
net.ipv4.tcp_fin_timeout = 15
fs.file-max = 100000           
  • 優化檔案系統的挂載選項:根據具體的應用需求,選擇合适的挂載選項,如使用noatime禁用通路時間更新、使用nodiratime禁用目錄通路時間更新等。

以下是一些常見的檔案系統挂載選項及其作用:

  1. noatime:禁用通路時間更新
  • 作用:預設情況下,每次檔案被通路時,檔案系統都會更新通路時間。禁用通路時間更新可以減少磁盤IO操作,提升檔案系統性能。
  • 示例:mount -o remount,noatime /dev/sda1
  1. nodiratime:禁用目錄通路時間更新
  • 作用:類似于noatime選項,但隻禁用目錄的通路時間更新。對于包含大量檔案的目錄,禁用目錄通路時間更新可以減少IO操作。
  • 示例:mount -o remount,nodiratime /dev/sda1
  1. relatime:相對通路時間更新
  • 作用:相對于atime選項,relatime選項會更新檔案的通路時間,但隻在上次通路時間早于或等于修改時間的情況下進行更新。這樣可以在不過度增加IO操作的情況下,保持atime功能的一部分。
  • 示例:mount -o remount,relatime /dev/sda1
  1. noexec:禁止在該檔案系統上執行可執行檔案
  • 作用:該選項可以防止在檔案系統上執行惡意或不必要的可執行檔案,提高系統的安全性。
  • 示例:mount -o remount,noexec /dev/sda1
  1. nosuid:禁止設定SUID和SGID權限
  • 作用:SUID和SGID權限允許執行程式以檔案所有者的權限運作,可能存在安全風險。使用nosuid選項可以禁止設定SUID和SGID權限。
  • 示例:mount -o remount,nosuid /dev/sda1
  1. noauto:禁止自動挂載
  • 作用:預設情況下,系統會在啟動時自動挂載檔案系統。使用noauto選項可以禁止自動挂載,需要手動執行挂載指令。
  • 示例:mount -o remount,noauto /dev/sda1
  1. data=writeback:寫回模式
  • 作用:預設情況下,Linux會采用資料寫入完整性的方式來處理檔案系統的寫操作。使用data=writeback選項可以啟用寫回模式,提升寫入性能,但可能會增加資料損壞的風險。
  • 示例:mount -o remount,data=writeback /dev/sda1

這些是常見的檔案系統挂載選項示例,您可以根據實際需求選擇适合的選項進行挂載。請注意,在更改檔案系統的挂載選項時,務必謹慎操作,并在實施之前備份相關配置檔案,以防止資料丢失或其他意外情況的發生。

請注意,以上優化政策隻是一些常見的示例,具體的優化政策應根據實際應用場景和需求進行調整。

通過調整核心參數并采用适當的政策,我們可以最大限度地優化系統性能,提升伺服器的響應能力和穩定性。在實施之前,請務必備份相關配置檔案,并謹慎測試和驗證調整後的效果。

尼恩提示:以上内容比較複雜,而且非常重要。如何把以上内容搞清楚? 可以看本文的配套視訊《調優聖經,老架構師帶實作履歷脫胎換骨》。

如果想把調優聖經寫入履歷,可以找老架構師尼恩提供履歷輔導,保證履歷金光閃閃、天衣無縫。

▌檔案系統優化

檔案系統在Linux伺服器中起着關鍵的作用,直接影響到資料的存儲、通路和性能。通過選擇合适的檔案系統類型、調整檔案系統參數以及優化RAID和LVM的使用,我們可以提升系統的檔案系統性能和可靠性。

本節将介紹如何選擇合适的檔案系統類型,調整檔案系統參數以提升性能,并探讨如何使用和優化RAID和LVM。

▌1. 選擇合适的檔案系統類型

在選擇檔案系統類型時,應考慮以下因素:

  • ext4:是Linux最常用的檔案系統類型,具有良好的性能和穩定性。
  • XFS:适用于大型檔案和大容量存儲,支援快速修複和高性能。
  • Btrfs:具有快照、壓縮和校驗功能,适用于需要進階特性的應用。
  • ZFS:具有強大的資料完整性和管理功能,适用于大規模存儲環境。

選擇适合應用需求的檔案系統類型,并在安裝或格式化磁盤時選擇相應的檔案系統。

▌2. 調整檔案系統參數以提升性能

  • 考慮調整檔案系統的塊大小(block size):對于存儲大檔案的場景,增大塊大小可以提高性能;對于存儲小檔案的場景,較小的塊大小可以節省磁盤空間。 使用适當的工具(例如mkfs指令)對磁盤進行格式化,并在格式化過程中選擇所需的塊大小。

例如,使用mkfs.ext4指令格式化磁盤并指定塊大小為4KB:

mkfs.ext4 -b 4096 /dev/sda1           

請注意,不同的檔案系統類型和工具可能具有不同的文法和選項。請參考相應的文檔以了解如何在您的系統上進行格式化和選擇塊大小。

  • 啟用适當的檔案系統日志模式:在高寫入負載下,選擇适當的檔案系統日志模式,可以提升寫入性能。

要啟用适當的檔案系統日志模式,您需要根據所使用的檔案系統類型進行相應的設定。下面是一些常見的檔案系統以及啟用适當的日志模式的方法:

◆1)ext4 檔案系統:

  • 資料日志模式(data=journal):适用于需要最高資料完整性和可靠性的場景。所有資料和中繼資料更改都将記錄在日志中,確定在系統崩潰時資料的完整性。
mount -o remount,data=journal /dev/sda1           
  • 預設日志模式(data=ordered):适用于大多數一般用途的情況。資料更改先寫入日志,然後按順序寫入檔案系統,以提供一定程度的資料完整性和性能。
mount -o remount,data=ordered /dev/sda1           
  • 無日志模式(data=writeback):适用于對性能要求較高的場景。資料更改直接寫入檔案系統而不寫入日志,提供最佳性能但可能會降低資料完整性。
mount -o remount,data=writeback /dev/sda1           

◆2)XFS 檔案系統:

  • 日志模式(logbufs):可以通過增加日志緩沖區的數量來提高性能。
mount -o remount,logbufs=8 /dev/sda1           

請注意,這隻是一些常見檔案系統的示例,不同的檔案系統可能具有不同的日志模式選項和文法。建議查閱相關文檔或官方文檔以擷取更準确的設定方法。

  • 考慮使用檔案系統特定的挂載選項:根據檔案系統類型,選擇适當的挂載選項以提高性能和穩定性,如前面提到的檔案系統優化章節中的選項。

◆3)RAID和LVM的使用和優化

  • RAID(備援陣列):使用RAID技術可以将多個磁盤組合成一個邏輯卷,提供資料備援和性能提升。根據需求選擇适當的RAID級别,如RAID 0、RAID 1、RAID 5、RAID 10等。
  • LVM(邏輯卷管理器):LVM允許将多個實體卷組合成一個邏輯卷,提供更靈活的存儲管理。合理規劃LVM的卷組、卷和邏輯卷大小,以滿足存儲需求并提高性能。

優化RAID和LVM的使用可以通過以下方式實作:

  • 均衡資料和I/O負載:合理配置設定資料和I/O負載,避免某些磁盤或卷成為性能瓶頸。
  • 使用高性能硬體:選擇高性能的RAID控制器和磁盤驅動器,以提高資料傳輸速度和響應時間。
  • 定期監測和維護:定期監測RAID和LVM的狀态,檢查磁盤健康性,及時修複或替換故障的硬體。

通過優化檔案系統的選擇、調整參數以及合理使用和優化RAID和LVM,可以提升系統的檔案系統性能和可靠性,滿足應用的存儲需求。請根據實際應用場景和需求進行調優,并在實施之前備份相關配置檔案以防止意外情況的發生。

尼恩提示:以上内容比較複雜,而且非常重要。如何把以上内容搞清楚? 可以看本文的配套視訊《調優聖經,老架構師帶實作履歷脫胎換骨》。

如果想把調優聖經寫入履歷,可以找老架構師尼恩提供履歷輔導,保證履歷金光閃閃、天衣無縫。

▌網絡優化

網絡性能對于伺服器應用程式的運作至關重要。通過調整網絡參數、優化TCP參數以及使用高性能網絡協定如RDMA,可以提高伺服器的網絡性能和響應能力。

本節将介紹如何調整網絡參數以提高性能、優化TCP參數以提升網絡傳輸效率,并探讨使用高性能網絡協定如RDMA的優勢。

▌1. 調整網絡參數以提高網絡性能

以下是一些常見的網絡參數調整方法:

  • 調整最大檔案句柄數:增加最大檔案句柄數可以支援更多的并發連接配接。
sysctl -w fs.file-max=100000           
  • 調整最大網絡連接配接數:增加最大網絡連接配接數可以提供更好的并發性能。
sysctl -w net.core.somaxconn=65535           
  • 調整網絡緩沖區大小:增大網絡緩沖區大小可以提高資料傳輸效率。
sysctl -w net.core.rmem_default=262144
sysctl -w net.core.wmem_default=262144
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216           
  • 啟用快速回收(Fast Recovery):快速回收可以加速網絡連接配接的恢複過程。
sysctl -w net.ipv4.tcp_frto=1           

▌2.TCP參數調優

通過調整TCP參數,可以優化網絡傳輸效率和連接配接的穩定性。以下是一些常見的TCP參數調優方法:

  • 調整TCP視窗大小:增大TCP視窗大小可以提高網絡吞吐量。
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.ipv4.tcp_wmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"           
  • 開啟TCP快速打開(Fast Open):TCP快速打開可以加速連接配接的建立過程。
sysctl -w net.ipv4.tcp_fastopen=3           
  • 調整TCP擁塞控制算法:根據網絡狀況選擇合适的擁塞控制算法。
sysctl -w net.ipv4.tcp_congestion_control=cubic           

▌3. 使用高性能網絡協定如RDMA

RDMA(遠端直接記憶體通路)是一種高性能網絡協定,可以通過繞過作業系統核心,在主機之間進行高速資料傳輸。使用RDMA可以顯著降低傳輸延遲和CPU開銷,提供更高的網絡性能。

要使用RDMA,您需要確定伺服器和網絡裝置支援RDMA技術,并正确配置和管理RDMA相關的軟體和硬體。

▌記憶體管理和交換空間

有效的記憶體管理和合理使用交換空間對于系統的性能至關重要。本節将介紹Linux的記憶體管理機制、調整記憶體參數以提升性能,并優化交換空間的使用。

▌1. 了解Linux記憶體管理機制

了解Linux的記憶體管理機制對于有效地管理和優化記憶體至關重要。重要的概念包括:

  • 記憶體分頁:Linux使用分頁機制将實體記憶體劃分為固定大小的頁面。
  • 頁面置換:當實體記憶體不足時,作業系統将一些頁面置換到交換空間中。
  • 緩存和緩沖區:Linux使用檔案系統緩存和磁盤緩沖區來提高磁盤I/O性能。
  • 記憶體回收:Linux會定期回收不再使用的記憶體頁面,并将其釋放給其他應用程式使用。

▌2. 調整記憶體參數以提升性能

通過調整記憶體參數,可以優化記憶體的使用和性能。以下是一些常見的記憶體參數調優方法:

  • 提高記憶體配置設定比例:将更多的記憶體配置設定給應用程式,以提高性能。
sysctl -w vm.swappiness=10           
  • 增加記憶體頁面回收速度:加快回收不再使用的記憶體頁面的速度,以提高可用記憶體。
sysctl -w vm.drop_caches=3           
  • 調整記憶體配置設定政策:根據應用程式的需求,調整記憶體配置設定政策以提高性能。
sysctl -w vm.overcommit_memory=1           
  • 調整頁緩存大小:根據應用程式的特性和需求,調整頁緩存的大小。
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5           

▌3. 優化交換空間的使用

交換空間可以作為實體記憶體的延伸,但過度使用交換空間可能會導緻性能下降。以下是一些優化交換空間使用的方法:

  • 調整交換空間大小:根據系統需求和實體記憶體的大小,合理調整交換空間的大小。
swapoff -a
dd if=/dev/zero of=/swapfile bs=1G count=8
mkswap /swapfile
swapon /swapfile           
  • 避免頻繁的交換:通過合理調整記憶體參數和優化應用程式的記憶體使用,減少系統對交換空間的依賴。
  • 監控交換空間的使用情況:定期監控交換空間的使用情況,確定沒有過度使用或過度依賴交換空間。

請根據實際應用場景和需求進行記憶體管理和交換空間的優化,并根據系統特點和負載進行适當的調整。注意,記憶體管理和交換空間優化需要謹慎操作,建議在實施之前備份重要的資料和配置檔案。

通過本章的實操内容,我們能夠全面了解如何對CentOS上的Linux伺服器進行調優。

這些技術和實踐将為您提供優化系統性能的關鍵知識和技能,確定您的應用程式在高負載和大流量情況下保持出色的性能表現。

讓我們繼續深入學習和實踐,提升Linux伺服器的性能,為Spring Boot應用程式的順暢運作打下堅實的基礎。

尼恩提示:以上内容比較複雜,而且非常重要。如何把以上内容搞清楚? 可以看本文的配套視訊《調優聖經,老架構師帶實作履歷脫胎換骨》。

如果想把調優聖經寫入履歷,可以找老架構師尼恩提供履歷輔導,保證履歷金光閃閃、天衣無縫。

▌Spring Boot内置Tomcat調優實戰:

Spring Boot内置的Tomcat作為預設的Servlet容器,為我們提供了友善快捷的Web應用程式開發和部署環境。然而,當應用程式的負載增加或性能需求提高時,我們需要對Tomcat進行調優,以確定系統能夠高效穩定地運作。

本章将重點介紹如何調優Spring Boot内置的Tomcat伺服器,以提升性能、響應速度和安全性。我們将深入讨論以下關鍵内容:

▌1. 調整Tomcat參數:

  • 調整連接配接器的參數,如最大連接配接數、最大線程數,以适應應用程式的負載和并發需求。
  • 配置連接配接器的逾時時間、請求緩沖區等參數,以提高請求的處理效率和吞吐量。

▌2. 緩存和會話管理優化:

  • 配置Tomcat的靜态資源緩存,以減少對磁盤IO的依賴,提升靜态資源的通路速度。
  • 優化會話管理,如使用分布式會話存儲、設定會話逾時時間等,以提高會話的效率和可靠性。

▌3. 安全性優化:

  • 配置Tomcat的安全性特性,如啟用SSL/TLS、禁用不安全的加密算法等,以提供安全的通信通道。

▌4. 日志管理

▌調整Spring Boot Tomcat參數

在Spring Boot中,我們可以通過配置檔案或代碼來調整内置的Tomcat參數,以優化網絡性能和并發處理能力。以下是調整Spring Boot Tomcat參數的方法:

▌1. 調整連接配接器參數以優化網絡性能

連接配接器是Tomcat用于處理網絡請求的元件,通過調整連接配接器參數可以提高網絡性能。在Spring Boot中,我們可以使用server.tomcat字首的配置屬性來調整連接配接器參數。

在application.properties檔案中添加以下配置:

# 設定連接配接器端口
server.port=8080

# 調整連接配接器參數
server.tomcat.max-connections=200
server.tomcat.max-threads=100
server.tomcat.connection-timeout=20000           

以上配置将設定連接配接器的最大連接配接數為200,最大線程數為100,連接配接逾時時間為20秒。

▌2. 調整線程池參數以提高并發處理能力

Tomcat使用線程池來處理并發請求,适當調整線程池參數可以提高并發處理能力。在Spring Boot中,我們可以使用server.tomcat.threads字首的配置屬性來調整線程池參數。

在application.properties檔案中添加以下配置:

# 調整線程池參數
server.tomcat.threads.max=200
server.tomcat.threads.min-spare=20           

以上配置将設定線程池的最大線程數為200,最小空閑線程數為20。

請根據實際需求和性能測試結果,靈活調整連接配接器和線程池參數,以優化Spring Boot内置Tomcat的性能和并發處理能力。

▌3. 上傳檔案配置優化

優化Spring Boot的檔案上傳配置可以提高檔案上傳的性能和可靠性。以下是一些優化檔案上傳配置的建議:

◆1. 增加最大檔案上傳大小限制

預設情況下,Spring Boot對檔案上傳大小進行了限制,通常為1MB。如果需要上傳大檔案,可以通過配置spring.servlet.multipart.max-file-size和spring.servlet.multipart.max-request-size屬性來增加最大檔案上傳大小限制。例如,設定為10MB:

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB           

◆2. 配置臨時檔案存儲位置

在檔案上傳過程中,Spring Boot會将檔案暫存到臨時檔案中。您可以通過配置spring.servlet.multipart.location屬性來指定臨時檔案存儲的位置。确儲存儲位置具有足夠的可用空間。

spring.servlet.multipart.location=/path/to/temp-directory           

▌緩存和會話管理優化

在Spring Boot中,我們可以通過配置和優化Tomcat的會話管理機制來提高性能和可伸縮性。以下是幾個優化Spring Boot Tomcat會話管理的方法:

  • 使用Cookie替代URL重寫:預設情況下,Tomcat會通過URL重寫(URL Rewriting)的方式将會話ID添加到URL中。這種方式可能導緻URL長度過長,影響性能和可讀性。我們可以配置Tomcat使用Cookie來存儲會話ID,通過以下配置實作:
# 配置使用Cookie來存儲會話ID
server.servlet.session.tracking-modes=cookie           
  • 配置會話逾時時間:會話逾時時間定義了會話在一段時間内沒有活動後被認為過期。通過合理設定會話逾時時間,可以釋放不活躍的會話資源,提高系統性能。
# 配置會話逾時時間(以分鐘為機關)
server.servlet.session.timeout=30           
  • 使用持久化會話存儲:預設情況下,Spring Boot使用基于記憶體的會話存儲機制。在高負載或需要共享會話的場景中,可以考慮将會話資訊存儲到資料庫或緩存中,以實作會話的持久化和共享。

對于使用Redis作為緩存的例子,可以進行以下配置:

  • 引入相關依賴:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>           
  • 配置Redis連接配接資訊:
# Redis連接配接配置
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=           
  • 配置會話存儲類型為Redis:
# 配置會話存儲類型為Redis
server.servlet.session.store-type=redis           

通過以上優化會話管理的方法,可以提升Spring Boot内置Tomcat的會話處理性能和可擴充性。根據具體需求和實際場景,選擇适合的配置和存儲方式來優化會話管理。

▌Spring Boot Tomcat安全性優化

在Spring Boot中,内置的Tomcat伺服器也可以通過一些安全性優化措施來增強應用程式的安全性。以下是幾個Spring Boot Tomcat安全性優化的建議:

啟用HTTPS可以加密資料傳輸,確定資料在網絡上的安全性。以下是配置Spring Boot Tomcat使用HTTPS的步驟:

  • 擷取SSL證書: 獲得有效的SSL證書,可以通過購買或使用free的證書頒發機構(CA)來獲得。
  • 配置SSL證書: 将SSL證書配置到應用程式的配置檔案中,例如application.properties:
# SSL/TLS配置
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=your-password
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=your-alias           
  • 啟用HTTPS: 在應用程式的配置檔案中啟用HTTPS:
# 啟用HTTPS
server.ssl.enabled=true           

▌Spring Boot Tomcat日志管理

在Spring Boot中,您可以通過配置Tomcat的通路日志(Access Log)來管理和分析通路日志。

使用日志分析工具可以幫助您更好地了解應用程式的行為、發現潛在的故障和性能問題。一些常用的日志分析工具包括ELK Stack(Elasticsearch、Logstash、Kibana)、Splunk、Graylog等。

配置Tomcat的日志輸出目錄和檔案格式,以便與日志分析工具內建,并定期分析日志以進行故障排查和性能優化。

以下是針對Spring Boot Tomcat的通路日志相關配置的優化政策:

▌1. 配置通路日志格式

通過配置通路日志的格式,您可以定義日志記錄的内容和結構。在Spring Boot中,可以使用server.tomcat.accesslog.pattern屬性來配置通路日志的格式。

server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b           
  • %h:遠端用戶端的IP位址或主機名。
  • %l:辨別遠端邏輯使用者名,通常為空格或-表示未知。
  • %u:辨別遠端使用者身份,通常為空格或-表示未知。
  • %t:請求的時間戳,使用Common Log Format的格式。
  • "%r":請求行,包括HTTP方法、請求路徑和協定。
  • %s:響應的HTTP狀态碼。
  • %b:響應中的位元組數。

上述示例配置了一個基本的通路日志格式,其中包含了IP位址、遠端使用者、請求時間、請求行、響應狀态和響應位元組數。您可以根據需求自定義通路日志的格式。

▌2. 配置通路日志位置和檔案名

預設情況下,Spring Boot Tomcat的通路日志是輸出到控制台的。為了更好地管理和歸檔通路日志,您可以配置通路日志的位置和檔案名。

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=/path/to/logs
server.tomcat.accesslog.prefix=access_log
server.tomcat.accesslog.suffix=.log           

上述示例将通路日志輸出到指定的目錄下,檔案名為access_log.log。您可以根據需求自定義目錄、字首和字尾。

▌3. 配置通路日志的輪轉和歸檔政策

為了控制通路日志檔案的大小和數量,可以配置輪轉和歸檔政策。

server.tomcat.accesslog.rotate=true
server.tomcat.accesslog.max-history=7
server.tomcat.accesslog.file-date-format=yyyy-MM-dd           

上述示例配置了通路日志的輪轉和歸檔政策。rotate屬性設定為true表示啟用輪轉,max-history屬性設定了保留的曆史檔案數量,file-date-format屬性指定了檔案名中日期的格式。

通過優化通路日志的格式、位置、檔案名以及配置輪轉和歸檔政策,您可以更好地管理和利用Spring Boot Tomcat的通路日志。

這樣可以提高日志的可讀性、便于故障排查和性能優化,并有效控制日志檔案的大小和數量。

尼恩提示:以上内容比較複雜,而且非常重要。如何把以上内容搞清楚? 可以看本文的配套視訊《調優聖經,老架構師帶實作履歷脫胎換骨》。

如果想把調優聖經寫入履歷,可以找老架構師尼恩提供履歷輔導,保證履歷金光閃閃、天衣無縫。

▌小結:

通過仔細閱讀本文,讀者将能夠全面了解如何從零基礎開始進行Linux伺服器和Spring Boot内置Tomcat的調優實戰。無論您是初學者還是有一定經驗的開發人員,本文提供了豐富的知識和實用的技巧,助您優化系統性能、最大程度地利用資源,并提升應用程式的穩定性和安全性。

在Linux伺服器調優方面,我們詳細介紹了如何安裝和配置監控工具,以實時監測伺服器的關鍵名額,包括CPU、記憶體、磁盤和網絡。通過分析監控資料,您将能夠準确識别系統性能瓶頸,為進一步的優化工作奠定基礎。

除了監控,我們還探讨了常用的核心參數以及它們的作用。通過調整這些參數,您可以優化系統的各個方面,從檔案系統和網絡性能到記憶體管理和交換空間的優化。我們提供了一系列實用的配置和腳本,幫助您輕松實作這些調優政策。

對于Spring Boot内置的Tomcat調優,我們還深入研究了如何調整Tomcat的參數以優化性能。通過調整連接配接器參數和線程池參數,您可以提高Tomcat的網絡性能和并發處理能力,進而更好地應對高流量的場景。

此外,我們還強調了緩存和會話管理的優化重要性。通過使用緩存來提高通路速度,并配置Tomcat的會話管理機制,您可以有效管理會話并提升應用程式的性能。對于會話共享問題,我們提供了使用分布式緩存的解決方案,以確定多個Tomcat執行個體之間的會話共享。

在安全性優化方面,我們詳細介紹了如何配置SSL/TLS加密通信,以保障資料傳輸的安全性。此外,我們強調了使用安全的密碼存儲政策的重要性,并提供了一些防止常見安全漏洞和攻擊的建議,以確定應用程式的安全性。

最後,我們讨論了日志管理的重要性,并提供了一些實用的建議。通過配置适當的日志級别和格式,您可以友善地追蹤和分析應用程式的運作情況,進而更好地進行故障排查和性能優化。我們還強調了日志輪轉和歸檔政策的重要性,以便有效地管理日志檔案并節省存儲空間。

通過學習本文提供的知識和技巧,讀者将能夠全面掌握Linux伺服器和Spring Boot内置Tomcat的調優實戰。這些調優政策和最佳實踐将幫助您提升系統性能、優化資源利用,并增強應用程式的穩定性和安全性。無論您是系統管理者、開發人員還是運維工程師,本文都為您提供了寶貴的指導和實用工具,助您在實際工作中取得優異的成果。

▌《Java 調優聖經》疊代計劃:

尼恩團隊的所有文章和PDF,都是 持續疊代的模式, 最新版本永遠是最全的。

尼恩團隊結合資深架構經驗和行業案例,給大家梳理一個系列的《Java 調優聖經》PDF,包括本文在内規劃的6個部分:

(1) 調優聖經1:零基礎精通Jmeter分布式壓測,10Wqps+壓測實操 (已經完成)

(2) 調優聖經2:從70s到20ms,一次3500倍性能優化實戰,方案人人可用 (已經完成)

(3) 調優聖經3:如何做mysql調優?絕命7招讓慢SQL調優100倍,實作你的Mysql調優自由 (已經完成)

(4) 調優聖經4:SpringBoot假死,十萬火急,怎麼救火? (已經完成)

(5) 調優聖經5:零基礎精通JVM調優實操,實作JVM自由 (已經完成)

(6) 調優聖經6:零基礎精通Linux、Tomcat調優實操,實作基礎設施調優自由 (本文)

同時如果通過圖文看不懂的地方,也可以看 尼恩團隊為《Java 調優聖經》 錄制的配套實操視訊。

如果不知道怎麼把《Java 調優聖經》 寫入履歷,也可以找尼恩團隊進行履歷的優化,保證優化之後金光閃閃、脫胎換骨。

▌技術自由的實作路徑 PDF:

▌實作你的架構自由:

  • 《吃透8圖1模闆,人人可以做架構》PDF
  • 《10Wqps評論中台,如何架構?B站是這麼做的!!!》PDF
  • 《阿裡二面:千萬級、億級資料,如何性能優化? 教科書級 答案來了》PDF
  • 《峰值21WQps、億級DAU,小遊戲《羊了個羊》是怎麼架構的?》PDF
  • 《100億級訂單怎麼排程,來一個大廠的極品方案》PDF
  • 《2個大廠 100億級 超大流量 紅包 架構方案》PDF

… 更多架構文章,正在添加中

▌實作你的 響應式 自由:

  • 《響應式聖經:10W字,實作Spring響應式程式設計自由》PDF
  • 這是老版本 《Flux、Mono、Reactor 實戰(史上最全)》PDF

▌實作你的 spring cloud 自由:

  • 《Spring cloud Alibaba 學習聖經》 PDF
  • 《分庫分表 Sharding-JDBC 底層原理、核心實戰(史上最全)》PDF
  • 《一文搞定:SpringBoot、SLF4j、Log4j、Logback、Netty之間混亂關系(史上最全)》PDF

▌實作你的 linux 自由:

  • 《Linux指令大全:2W多字,一次實作Linux自由》PDF

▌實作你的 網絡 自由:

  • 《TCP協定詳解 (史上最全)》PDF
  • 《網絡三張表:ARP表, MAC表, 路由表,實作你的網絡自由!!》PDF

▌實作你的 分布式鎖 自由:

  • 《Redis分布式鎖(圖解 - 秒懂 - 史上最全)》PDF
  • 《Zookeeper 分布式鎖 - 圖解 - 秒懂》PDF

▌實作你的 王者元件 自由:

  • 《隊列之王: Disruptor 原理、架構、源碼 一文穿透》PDF
  • 《緩存之王:Caffeine 源碼、架構、原理(史上最全,10W字 超級長文)》PDF
  • 《緩存之王:Caffeine 的使用(史上最全)》PDF
  • 《Java Agent 探針、位元組碼增強 ByteBuddy(史上最全)》PDF

▌實作你的 面試題 自由:

4000頁《尼恩Java面試寶典》PDF 40個專題

....

注:以上尼恩 架構筆記、面試題 的PDF檔案,請到公号《技術自由圈》取

還需要啥自由,可以告訴尼恩。 尼恩幫你實作.......