首頁 > php框架 > Laravel > 記錄使用Laravel-s抵禦百度爬蟲的經歷

記錄使用Laravel-s抵禦百度爬蟲的經歷

藏色散人
發布: 2020-08-22 13:21:44
轉載
3414 人瀏覽過

#什麼是Laravel-s記錄使用Laravel-s抵禦百度爬蟲的經歷

LaravelS是一個膠水項目,用於快速整合Swoole到Laravel或Lumen,賦予它們更好的性能github位址


#為什麼用Laravel-s

百度小程式上線後,百度爬蟲過高的qps(並發) 導致cpu 滿載,伺服器宕機,伺服器配置4核8G記憶體5M寬頻。這時候怎麼辦? 調整 php-fpm 參數,設定為靜態,靜態模式對比動態模式效能更高。例如設定子進程數量255甚至更高,越高承受的並發量越大,但越高佔用記憶體越大。結論,一定程度上有效果,但高並發下無用。

    回饋百度調整爬蟲抓取頻率。結論,等吧,黃花菜都涼了,但還是回饋下比較好。
  • 負載平衡。讓其他伺服器分擔壓力,前提是有足夠的伺服器,且都要部署相同的程式碼,且不能影響其他伺服器本來職責的業務。或是在某雲臨時申請N台伺服器,但你不知道爬蟲什麼時間來,什麼時間去,不切實際。
  • 接下來是文章的主題,用 Laravel-s 加速 http 回應。
  • Laravel-s 究竟起到多少加速效果

因為當時沒有統計所有時段qps 具體值,所以沒辦法得出準確的結論,只能根據調整前後的機器負載做比較。 部署前,

cpu

滿載,機器宕機N次,癱瘓狀態。外網出寬頻佔滿(5M),部署後cpu立即降到20 , 暫時升級寬頻15M後,

cpu

達到60%,外網寬頻仍被佔滿(只能說百度爬蟲是真作啊,多少寬頻你就來多少啊)。結論,至少帶來5倍的效能提升。 具體部署

爬蟲所爬取的頁面只是一部分,所以並不是將線上專案改造成laravel-s ,也不現實。我們只需要將爬取的頁面分開來,單獨部署到laravel-s

新空項目,業務邏輯只處理抓取的頁面api,項目連接埠號碼如6501

  • 部署laravel-s ,測試api 及ab壓測

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

  • location ~ ^/v1/test.* {
     proxy_pass http://127.0.0.1:6501;
     proxy_set_header Host $host;}
    登入後複製

    注意的幾點:

#在conf/laravels.php 中,預設開啟

worker
    數量是
  • cpu

    核數的兩倍。 laravles 是運行在

    swoole
  • ,在記憶體中,每次更改程式碼,需重啟
  • laravel-s

    由於第2條的原因,資料庫連線無法釋放,需開啟 laravel 的斷開重連(>laravle5.1)。在

    conf/database.php
  • mysql

    配置中新增

    'options'   => [
     // 开启持久连接
     \PDO::ATTR_PERSISTENT => true,],
    登入後複製

以上是記錄使用Laravel-s抵禦百度爬蟲的經歷的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板