溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

記錄一下使用Laravel-s抵御百度爬蟲的經(jīng)歷

發(fā)布時(shí)間:2021-03-11 14:05:28 來源:億速云 閱讀:201 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)記錄一下使用Laravel-s抵御百度爬蟲的經(jīng)歷的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

下面由Laravel教程欄目給大家記錄一下使用Laravel-s抵御百度爬蟲的經(jīng)歷,希望對(duì)需要的朋友有所幫助!

記錄一下使用Laravel-s抵御百度爬蟲的經(jīng)歷

什么是 Laravel-s

LaravelS是一個(gè)膠水項(xiàng)目,用于快速集成Swoole到Laravel或Lumen,賦予它們更好的性能
github地址

為什么用 Laravel-s

百度小程序上線后,百度爬蟲過高的 qps(并發(fā)) 導(dǎo)致 cpu 滿載,服務(wù)器宕機(jī),服務(wù)器配置4核8G內(nèi)存5M寬帶。這時(shí)候怎么辦?

  • 調(diào)整 php-fpm 參數(shù),設(shè)置為靜態(tài),靜態(tài)模式對(duì)比動(dòng)態(tài)模式性能更高。比如設(shè)置子進(jìn)程數(shù)量255甚至更高,越高承受的并發(fā)量越大,但越高占用內(nèi)存越大。結(jié)論,一定程度上有效果,但高并發(fā)下無用。

  • 反饋百度調(diào)整爬蟲抓取頻率。結(jié)論,等吧,黃花菜都涼了,但還是反饋下比較好。

  • 負(fù)載均衡。讓其他服務(wù)器分擔(dān)壓力,前提是有足夠的服務(wù)器,且都要部署相同的代碼,且不能影響其他服務(wù)器本來職責(zé)的業(yè)務(wù)?;蛘咴谀吃婆R時(shí)申請(qǐng)N臺(tái)服務(wù)器,但你不知道爬蟲什么時(shí)間來,什么時(shí)間去,不現(xiàn)實(shí)。

  • 接下來就是文章的主題,用 Laravel-s 加速 http 響應(yīng)。

Laravel-s 究竟起到多少加速效果

由于當(dāng)時(shí)沒有統(tǒng)計(jì)所有時(shí)段 qps 具體值,所以沒辦法得出準(zhǔn)確的結(jié)論,只能根據(jù)調(diào)整前后的機(jī)器負(fù)載做對(duì)比。

部署前,cpu滿載,機(jī)器宕機(jī)N次,癱瘓狀態(tài)。外網(wǎng)出寬帶占滿(5M),部署后cpu立即降到20+, 臨時(shí)升級(jí)寬帶15M后,cpu達(dá)到 60%,外網(wǎng)寬帶仍被占滿(只能說百度爬蟲是真作啊,多少寬帶你就來多少?。?。結(jié)論,至少帶來5倍的性能提升。

具體部署

爬蟲所爬取的頁面只是一部分,所以并不是將線上項(xiàng)目改造成laravel-s,也不現(xiàn)實(shí)。我們只需要將爬取的頁面分離出來,單獨(dú)部署到laravel-s。

  • 新建空項(xiàng)目,業(yè)務(wù)邏輯只處理抓取的頁面api,項(xiàng)目端口號(hào)如 6501

  • 部署 laravel-s ,測(cè)試api 及 ab壓測(cè)

  • 線上項(xiàng)目將爬蟲爬取的頁面路徑代理到新建項(xiàng)目,如127.0.0.1:6501

location ~ ^/v1/test.* {
 proxy_pass http://127.0.0.1:6501;
 proxy_set_header Host $host;}

注意的幾點(diǎn):

  • conf/laravels.php 中,默認(rèn)開啟 worker 數(shù)量是 cpu 核數(shù)的兩倍。

  • laravles 是運(yùn)行在 swoole ,在內(nèi)存中,每次更改代碼,需重啟 laravel-s。

  • 由于第2條的原因,數(shù)據(jù)庫連接得不到釋放,需開啟 laravel 的斷開重連(>laravle5.1)。在 conf/database.phpmysql配置中添加

'options'   => [
 // 開啟持久連接
 \PDO::ATTR_PERSISTENT => true,],

感謝各位的閱讀!關(guān)于“記錄一下使用Laravel-s抵御百度爬蟲的經(jīng)歷”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI