導航:首頁 > 編程語言 > php代碼壓力測試

php代碼壓力測試

發布時間:2023-01-17 12:18:06

php web伺服器。網站上線在即,請問如何測試伺服器壓力呢比如如何知道這個網站到底能同時承受

利用一些軟體吧,可用來進行 Web 壓力測試的工具有很多,比如微軟的 Web Application Stress、linux下的 siege、功能全面的 Web-CT 等等,這些都是非常優秀的 Web 壓力測試工具。
一、 Siege
一款開源的壓力測試工具,可以根據配置對一個WEB站點進行多用戶的並發訪問,記錄每個用戶所有請求過程的相應時間,並在一定數量的並發訪問下重復進行。
官方:http://www.joedog.org/

1. 下載源碼
請自行google例如:
wget http://soft.vpser.net/test/siege/siege-2.67.tar.gz

2. 解壓編譯和安裝
tar -zxf siege-2.67.tar.gz cd siege-2.67/ /configure make && make install

3. 運行siege
siege -c 200 -r 10 -f test.txt

-c是並發量,-r是重復次數。 url文件就是一個文本,每行都是一個url,它會從裡面隨機訪問的。

test.txt 內容:
http://blog.test.com/wp-content/uploads/2012/07/cluster6.png
http://blog.test.com/wp-content/uploads/2012/07/cluster7-150x150.png
http://blog.test.com/wp-content/uploads/2012/07/cluster7.png
http://blog.test.com/wp-content/uploads/2012/07/cluster8-150x150.png
http://blog.test.com/wp-content/uploads/2012/07/cluster9-150x150.png

4 結果說明
Lifting the server siege… done.
Transactions: 3419263 hits //完成419263次處理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 5999.69 secs //總共用時
Data transferred: 84273.91 MB //共數據傳輸84273.91 MB
Response time: 0.37 secs //相應用時1.65秒:顯示網路連接的速度
Transaction rate: 569.91 trans/sec //均每秒完成 569.91 次處理:表示伺服器後
Throughput: 14.05 MB/sec //平均每秒傳送數據
Concurrency: 213.42 //實際最高並發數
Successful transactions: 2564081 //成功處理次數
Failed transactions: 11 //失敗處理次數
Longest transaction: 29.04 //每次傳輸所花最長時間
Shortest transaction: 0.00 //每次傳輸所花最短時間

二、Webbench
webbench最多可以模擬3萬個並發連接去測試網站的負載能力,安裝使用簡單方便。

1. 下載源碼
請自行google例如:
wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz

2. 解壓、編譯和安裝
tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make mkdir /usr/local/man #建立相應目錄否則導致無法正常安裝 make install

3. 運行webbench
webbench -c 100 -t 30 http://192.168.1.235/index.html

-c表示並發數,-t表示時間(秒)

Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.235/index.html
100 clients, running 30 sec.
Speed=16084 pages/min, 152872 bytes/sec. #運行結果顯示
Requests: 8042 susceed, 0 failed.

三、Web Application Stress Tool
這是由微軟的網站測試人員開發的專門用來進行實際網站壓力測試以一套工具。透過這套功能強大的壓力測試工具,管理人員可以在網站實際上線之前先網站進行如同真實環境下的測試,以找出系統潛在的問題,對系統進行進一步的調整、設置工作。

⑵ 請教,如何對PHP站點作壓力測試

網站壓力測試Web-CT 4.0
可以測試不同上網方式、在不同地區、訪問Web不同頁面、在不同並發訪問密度情況下的:客戶端的響應時間、流量和流速;可以測試任何主機、Web Server和頁面(HTML、CGI、JSP、PHP、ASP、GIF、FLASH以及聲音、MPEG等多媒體文檔);可以進行分布式多機並行測試,然後合並和計算機測試報告,實現極高的伺服器測試壓力。

⑶ PHP的性能探討和測試

緣起

關於PHP 很多人的直觀感覺是PHP是一種靈活的腳本語言 庫類豐富 使用簡單 安全 非常適合WEB開發 但性能低下 PHP的性能是否真 的就如同大家的感覺一樣的差呢?本文就是圍繞這么一個話題來進行探討的 從源碼 應用場景 基準性能 對比分析等幾個方面深入分析PHP之性能問題 並通 過真實的數據來說話

從原理分析PHP性能

從原理分析PHP的性能 主要從以下幾個方面 內存管理 變數 函數 運行機制來進行分析

內存管理

類似Nginx的內存管理方式 PHP在內部也是基於內存池 並且引入內存池的生命周期概念 在內存池方面 PHP對PHP腳本和擴展的所有內 存相關操作都進行了託管 對大內存和小內存的管理採用了不同的實現方式和優化 具體可以參考以下文檔 在內存分配和回收的生命周期內 PHP採用一次初始化申請+動態擴容+內存標識回收機制 並且在每次請求結束後直 接對內存池進行重新mask

變數

總所周知 PHP是一種弱變數類型的語言 所以在PHP內部 所有的PHP變數都對應成一種類型Zval 其中具體定義如下

圖一PHP變數

在變數方面 PHP做了大量的優化工作 比如說Reference counting和 on writer機制 這樣能夠保證內存使用上的優化 並且減少內存拷貝次數(請參考) 在數組方面 PHP內部採用高效的hashtable來實現

函數

在PHP內部 所有的PHP函數都回轉化成內部的一個函數指針 比如說擴展中函數

ZEND_FUNCTION(my_function);//類似functionmy_function(){}

在內部展開後就會是一個函數

voidzif_my_function(INTERNAL_FUNCTION_PARAMETERS);

voidzif_my_function(

intht

zval*return_value

zval*this_ptr

intreturn_value_used

zend_executor_globals*executor_globals

);

從這個角度來看 PHP函數在內部也是對應一個函數指針

運行機制

在話說PHP性能的時候 很多人都會說「C/C++是編譯型 JAVA是半編譯型 PHP是解釋型」 也就是說PHP是先動態解析再代碼運行的 所以從這個角度來看 PHP性能必然很差

的確 從PHP腳本運行來輸出 的確是一個動態解析再代碼運行的過程 具體來說 PHP腳本的運行機制如下圖所示

圖二 PHP運行機制

PHP的運行階段也分成三個階段

所以說 在PHP內部 本身也是存在編譯的過程 並且據此產生了大量的opcode cache工具 比如說apc eacc xcache等等 這些opcode cache在生產環境基本上在標配 基於opcode cache 能到做到「PHP腳本編譯一次 多次運行」的效果 從這點上 PHP就和JAVA的半編譯機制非常類似

所以 從運行機制上來看 PHP的運行模式和JAVA是非常類似的 都是先產生中間碼 然後運行在不同虛擬機上

動態運行

從上面的幾個分析來看 PHP在內存管理 變數 函數 運行機制等幾個方面都做了大量的工作 所以從原理來看 PHP 不應該存在性能問題 性能至少也應該和Java 比較接近

這個時候就不得不談PHP動態語言的特性所帶來的性能問題了 由於PHP是動態運行時 所以所有的變數 函數 對象調用 作用域實現等等都是在 執行階段中才確定的 這個從根本上決定了PHP性能中很難改變的一些東西 在C/C++等能夠在靜態編譯階段確定的變數 函數 在PHP中需要在動態運行 中確定 也就決定了PHP中間碼不能直接運行而需要運行在Zend Engine上

說到PHP變數的具體實現 又不得不說一個東西了 Hashtable Hashtable可以說在PHP靈魂之一 在PHP內部廣泛用到 包含變數符號棧 函數符號棧等等都是基於hashtable的

以PHP變數為例來說明下PHP的動態運行特點 比如說代碼

<?php

$var=「hello blog xiuwz 」;

?>

該代碼的執行結果就是在變數符號棧(是一個hashtable)中新增一個項

當要使用到該變數時候 就去變數符合棧中去查找(也就是變數調用對出了一個hash查找的過程)

同樣對於函數調用也基本上類似有一個函數符號棧(hashtable)

其實關於動態運行的變數查找特點 在PHP的運行機制中也能看出一些 PHP代碼通過解釋 編譯後的流程下圖

圖 PHP運行實例

從上圖可以看出 PHP代碼在pile之後 產出的了類符號表 函數符號表 和OPCODE 在真正執行的時候 zend Engine會根據op code去對應的符號表中進行查找 處理

從某種程度上 在這種問題的上 很難找到解決方案 因為這是由於PHP語言的動態特性所決定的 但是在國內外也有不少的人在尋找解決方案 因為 通過這樣 能夠從根本上完全的優化PHP 典型的列子有facebook的hiphop

結論

從上面分析來看 在基礎的內存管理 變數 函數 運行機制方面 PHP本身並不會存在明顯的性能差異 但由於PHP的動態運行特性 決定了 PHP和其他的編譯型語言相比 所有的變數查找 函數運行等等都會多一些hash查找的CPU開銷和額外的內存開銷 至於這種開銷具體有多大 可以通過後 續的基準性能和對比分析得出

因此 也可以大體看出PHP不太適合的一些場景 大量計算性任務 大數據量的運算 內存要求很嚴格的應用場景 如果要實現這些功能 也建議通過擴展的方式實現 然後再提供鉤子函數給PHP調用 這樣可以減低內部計算的變數 函數等系列開銷

基準性能

對於PHP基準性能 目前缺少標準的數據 大多數同學都存在感性的認識 有人認為 QPS就是PHP的極限了 此外 對於框架的性能和框架對性能的影響很沒有響應的權威數字

本章節的目的是給出一個基準的參考性能指標 通過數據給大家一個直觀的了解

具體的基準性能有以下幾個方面

裸PHP性能 完成基本的功能

裸框架的性能 只做最簡單的路由分發 只走通核心功能

標准模塊的基準性能 所謂標准模塊的基準性能 是指一個具有完整服務模塊功能的基準性能

環境說明

測試環境

Uname aPnux db forum test db _ # SMP Wed Aug : : CST x _ x _ x _ GNU/Pnux

Red Hat Enterprise Pnux AS release (Nahant Update )

Intel(R) Xeon(R) CPU E @ GHz

軟體相關

Nginx nginx version: nginx/ built by gcc (Red Hat )

Php (採用php fpm)

PHP (cP) (built: Mar : : )

Copyright (c) The PHP Group

Zend Engine v Copyright (c) Zend Technologies

with eAccelerator v Copyright (c) eAccelerator by eAccelerator

bingo

PHP框架

其他說明

目標機器的部署方式 nginx >php fpm >php腳本

測試壓力機器和目標機器獨立部署

裸PHP性能

最簡單的PHP腳本

<?php

require_once『 /actions/indexAction php』;

$objAction=newindexAction();

$objAction >init();

$objAction >execute();

?>

Acitons/indexAction php裡面的代碼如下

<?php

classindexAction

{

pubPcfunctionexecute()

{

echo『hello world!』;

}

}

?>

通過壓力工具測試結果如下

裸PHP框架性能

為了和 的對比 基於bingo 框架實現了類似的功能 代碼如下

<?php

require_once『Bingo/Controller/Front php』;

$objFrontController=Bingo_Controller_Front::getInstance(array(

『actionDir』=>『 /actions』

));

$objFrontController >dispatch();

壓力測試結果如下

從該測試結果可以看出 框架雖然有一定的消耗 但對整體的性能來說影響是非常小的

標准PHP模塊的基準性能

所謂標准PHP模塊 是指一個PHP模塊所必須要具體的基本功能

路由分發

自動載入

LOG初始化&Notice日誌列印 所以的UI請求都一條標準的日誌

採用bingo 的代碼自動生成工具產生標準的測試PHP模塊 test

測試結果如下

結論

從測試數據的結論來看 PHP本身的性能還是可以的 基準性能完全能夠達到幾千甚至上W的QPS 至於為什麼在大多數的PHP模塊中表現不佳 其實這個時候更應該去找出系統的瓶頸點 而是簡單的說OK PHP不行 那我們換C來搞吧 (下一個章節 會通過一些例子來對比 採用C來處理不見得有特 別的優勢)

通過基準數據 可以得出以下幾個具體的結論

PHP本身性能也很不錯 簡單功能下能夠達到 QPS 極限也能過W

PHP框架本身對性能影響非常有限 尤其是在有一定業務邏輯和數據交互的情況下 幾乎可以忽略

一個標準的PHP模塊 基準性能能夠達到 QPS( cpu idle)

對比分析

lishixin/Article/program/PHP/201311/21287

⑷ php電子商務性能測試怎麼測試

一:性能測試
(1)連接速度測試。用戶連接到電子商務網的速度與上網方式有關,他們或許是電話撥號,或是寬頻上網!
(2)負載測試。負載測試是在某一負載級別下,檢測電子商務系統的實際性能。
也就是能允許多少個用戶同時在線!可以通過相應的軟體在一台客戶機上模擬多個用戶來測試負載。
(3)壓力測試。壓力測試是測試系統的限制和故障恢復能力,也就是測試電子商務系統會不會崩潰!
二:安全性測試
它需要對電子商務的客戶伺服器應用程序、數據、伺服器、網路、防火牆等進行測試!用相對應的軟體進行測試!
{上面的測試是針對電子商務的,在電子商務書上找到的,那個測試一般普通的網站就是二方面。
1.基本測試
包括色彩的搭配,連接的正確性,導航的方便和正確,CSS應用的統一性
2.技術測試
網站的安全性(伺服器安全,腳本安全),可能有的漏洞測試,攻擊性測試,錯誤性測試。 }
網站的評估主要對以下方面:網站界面,產品展示,在線支付,在線客服,線下產品配送。更重要的是目標消費者可以很方便快捷的找到該網站,從而進行電子商務活動.讓客戶找到該電子商務網站。是否網站有一個搜索引擎!或是把自己的網站添加到一些大的分類目錄上。再就是讓目標客戶記得你網站的名字(最終效果--品牌效果)並直接進去!個好的電子商務網站是看它是否經過搜索引擎優化了.

⑸ 整套php源代碼在本地怎麼測試運行

那得看你這個項目是用php的框架寫的還是原生php寫的,如果是用框架寫的,可以寫個配置域名或者ip來指定訪問這個項目的入口文件,如果是用原生php寫的,就可以不用這么麻煩,所有php文件都可以通過localhost加文件名來訪問,還有一點就是還要確定你這個項目的資源文件,例如圖片、css文件、js文件,不過這些看你訪問入口文件就知道了,一步一步修改配置即可,希望對你有幫助

⑹ php 同時啟動多個進程

你可以吧php放到apache上,然後用壓力測試工具測試這個php頁面,這樣就能多線程處理了。

⑺ mysql +php怎樣進行壓力測試

apache 自帶的apache benchmark

或者 安裝siege,
就可以直接測,其實比較簡單的,就幾個命令行哈

網上的資料也比較多的

⑻ php 網站壓力測試主要是測試哪些方面

apache自帶一個測試軟體:ab.exe

ab.exe-k-c300-n2000http://localhost/

-k keep-alive

-c 並發線程數量

-n 請求數量


返回的報告:

每秒處理次數

最慢處理時間

平均每次請求的處理時間

閱讀全文

與php代碼壓力測試相關的資料

熱點內容
voc文件夾 瀏覽:862
租廣東聯通伺服器注意什麼雲空間 瀏覽:932
javascript高級程序設計pdf 瀏覽:289
pwm單片機原理 瀏覽:346
ai演算法在線修復圖片 瀏覽:979
scratch編程中如何做射擊游戲 瀏覽:476
at89c51編程器 瀏覽:341
項目經理叫醒程序員 瀏覽:342
autocad旋轉命令 瀏覽:660
手機版wpsoffice怎麼打包文件夾 瀏覽:579
在成都學車用什麼app 瀏覽:818
grep命令管道 瀏覽:426
java修改重啟 瀏覽:567
單片機供電方案 瀏覽:770
airpodspro一代怎麼連接安卓 瀏覽:218
豌豆莢app上有什麼游戲 瀏覽:283
公路商店app標簽選什麼 瀏覽:339
linuxoracle命令行登錄 瀏覽:227
android深度休眠 瀏覽:173
php微信開發例子 瀏覽:846