nginx php fpm負載均衡和效能測試

2021-08-21 16:24:58 字數 3074 閱讀 3015

一直知道nginx本身能進行負載均衡,但沒有測試過,今天實驗了下,以下是筆記記錄

規劃3臺web伺服器,做負載均衡,由於之前已經有一台虛擬機器,因此我現在增加2臺.

依次進行以下操作

1.e盤建立乙個servers目錄初始化vagrant init

2.配置檔案vagrantfile,增加了2臺虛擬機器分別在192.168.33.11,192.168.33.12與之前的192.168.33.10組成3臺集群

vagrant.configure(2) do |config|

config.vm.define "web_1" do |web_1|

web_1.vm.box = "centos67"

web_1.vm.network "private_network", ip: "192.168.33.11"

web_1.vm.provider "virtualbox" do |v|

v.memory = "1024"

endend

config.vm.define "web_2" do |web_2|

web_2.vm.box = "centos67"

web_2.vm.network "private_network", ip: "192.168.33.12"

web_2.vm.provider "virtualbox" do |v|

v.memory = "1024"

endend

end

3.為新增的2臺伺服器安裝php和一些必要的軟體,為了提高效率,隨意寫了個指令碼2臺機器上執行

yum install -y gcc vim

su -c 'rpm -uvh '

rpm -uvh

yum install -y nginx

yum install -y php71w-* --skip-broken

groupadd dev

useradd -s /bin/bash -g dev vison

本實驗中web_1和web_2 2臺伺服器其實只用到php-fpm,之前的一台host_1(192.168.33.10)會用到nginx和php-fpm

4.配置web_1和web_2的php-fpm 的www.conf配置檔案

主要涉及到的配置是listen 和 listen.allowed_clients

前者表示php-fpm 監聽的ip 和埠,由於要讓host_1的nginx反向**到,所以應該使用區域網ip,而不是預設的127.0.0.1.

#192.168.33.11的www.conf

listen = 192.168.33.11:9000

listen.allowed_clients = 192.168.33.10

#192.168.33.11的www.conf

listen = 192.168.33.12:9000

listen.allowed_clients = 192.168.33.10

配置好後注意過載配置 service php-fpm reload

5.配置host_1 的nginx 進行負載均衡

#nginx.conf

#配置均衡日誌 可以看到具體**到了哪台機器的fpm

log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';

access_log /var/log/nginx/$host.access.log upstreamlog;

upstream php-fpm-backend

#test-dev.conf vhost 配置

server_name test.dev;

root /home/vison/www/demaya/webroot;

location ~ \.php$

6.同步php檔案

由於不同的fpm都會找本機的root目錄即之前配置的/home/vison/www/demaya/webroot,所以需在192.168.33.10-12 3臺機器上都有相同的**. 為了方便測試,我這裡故意更改了3臺機器的index.php檔案**.host_1 輸出hello,host_1,web_1輸出hello,web_1依次類推。

瀏覽器訪問test.dev

結果:第一次 hello,host_1

第二次 hello,web_1

第三次 hello,web_2

...依次

說明:nginx已經按照輪流模式**到了host_1 web_1 web_2,檢視host_1的access.log也同樣會發現

多台伺服器**就一定會提公升效能嗎?

筆者用ab在負載均衡之前和之後都測試過,答案卻是否定的

在多伺服器之前,單核cpu 1g記憶體 nginx和php-fpm 都按預設配置rps能達到900+,然而增加了2臺同樣配置的虛擬機器**卻只能達到800+了。

php-fpm 程序數auto的配置會奏效,會自動增加php-fpm數.但是效能提公升效果並不明顯,然而nginx 的auto 並沒奏效,仍然只有乙個.通過手動增加nginx配置,發現rps有所提公升,但效果很不明顯。

運用vmstat檢視分析效能瓶頸時,感覺上是cpu上到了瓶頸,vmstat顯示r挺多說明cpu處理不過來。於是我更改了host_1的cpus 配置改為2.再次ab,結果rps能達到1500左右,差不多翻倍了!

效能問題並不那麼容易解決,需要耐心的排查原因.

nginx php fpm負載均衡和效能測試

一直知道nginx本身能進行負載均衡,但沒有測試過,今天實驗了下,以下是筆記記錄 規劃3臺web伺服器,做負載均衡,由於之前已經有一台虛擬機器,因此我現在增加2臺.依次進行以下操作 1.e盤建立乙個servers目錄初始化vagrant init 2.配置檔案vagrantfile,增加了2臺虛擬機...

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...

軟負載均衡和F5負載均衡(硬負載均衡)區別

分割線,以下是原文內容 負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件 網路裝置 和伺服器 的頻寬 增加 吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web 伺服器 ftp...