php 并发 100 压测,简单PHP把握站点并发数
一般來說,一個項目中老是會有一些較難處理懲罰的營業(yè),比如營業(yè)錯雜花樣繁多的搜刮,應(yīng)用搜刮體系如sphinx,lucence等來處理懲罰的話,數(shù)據(jù)源的若是變更過快(如頂、踩、瀏覽數(shù)之類),則起推薦數(shù)據(jù)的頻率就較難衡量,別的無確搜刮或排序。所以一般景象下的做法是經(jīng)由過程DB進行搜刮,并且除了盡量將營業(yè)分化到法度層面外,還會在DB前加一層cache。然則如許做也有不少已知的弊病:
1、實際上很多營業(yè)無法放到通俗的PHP中處理懲罰,如一些較錯雜的排序、篩選,經(jīng)由過程通俗的PHP來實現(xiàn)的話效力還不如MYSQL。
2、cache的射中率也不好包管,希罕是對一些應(yīng)用關(guān)鍵詞進行查詢的營業(yè),關(guān)鍵詞變更太多。
若是碰到惡意刷的話,DB辦事器輕易直接掛掉,是以我們可以在法度層面上加一層限制器,限制并發(fā)數(shù),該限制器具備以下特點:
1、高效(空話么,不然直接刷限制器就刷爆了)。如今是應(yīng)用memcache進行原子操縱計數(shù),可以擴大成應(yīng)用其他辦法。
2、正確到action層。可以零丁限制單個頁面。
3、便利。見仁見智吧
4、本錢低廉。包含研發(fā)本錢與硬件本錢。
按照壓測,本來只能100并發(fā)的搜刮功能,限制100后,壓測800成果正常。
代碼如下:
/
搜刮
/
public function search(){
//增長計數(shù)器功能,跨越次數(shù)則返回體系繁忙
¥viewlimiter = Library::load(viewlimiter);
//接見限制器的名稱,請用controller+action,盡量單個頁面對峙獨一
¥limitName = search_search;
//最多同時接見數(shù)
¥limit = 100;
//若是跨越數(shù)量則直接返回
if(!¥viewlimiter->check(¥limitName, ¥limit)) {
ajaxOutput(0, ¥this->lang->line(multi_search_limit));
}
/----錯雜變態(tài)的營業(yè)邏輯-----/
¥xxxModel->search(¥params);
}
//end func
?>
擴大話題:
1、若是該營業(yè)被刷,可能導(dǎo)致正常用戶無法查看內(nèi)容。 -- 這個題目要解決只能是從體系層面去操縱,可見這邊:http://johnsteven.blog.51cto.com/2523007/818209
2、限制數(shù)好能與緩存射中率相連絡(luò),必然局限內(nèi)主動變革限制數(shù),進步限制的精準(zhǔn)度。 -- 這個后期可以進行研究,與緩存類相連絡(luò)
3、按照辦事器負載進步履態(tài)把握。 -- 涉及到底層及辦事器權(quán)限,研究本錢較高,有愛好的話可以研究。
注:
本文只申明思路,具體代碼因為一些原因臨時不開放文藝不是炫耀,不是花哨空洞的文字堆砌,不是一張又一張的逆光照片,不是將旅行的意義轉(zhuǎn)化為名牌包和明信片的物質(zhì)展示;很多時候它甚至完全不美——它嘶吼、扭曲,它會痛苦地抽搐,它常常無言地沉默?!】隆段乃囀且环N信仰》
總結(jié)
以上是生活随笔為你收集整理的php 并发 100 压测,简单PHP把握站点并发数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PUSHA/PUSHAD POPA/PO
- 下一篇: PHP中使用八进制 可以在前面加,PHP