1. 程式人生 > >04 centos實現nginx日記滾動

04 centos實現nginx日記滾動

  在上一篇當中,已經搭建好nginx+tomcat實現動靜資源的分離。

  接下來,使用ab做壓力測試:

       2.使用ab進行壓力測試
        //-c : 設定併發度,同時訪問的線上人數
        //-n : 設定總的訪問請求數。
        cmd>ab -c 100 -n 10000 http://localhost:80/eshop/phone/iphonex.html

     3就會發現

s128佔了1份,s129,s130,s131分別佔了四份,因為是上一篇中window10上的nginx反向代理伺服器將它們權重分別設定為1,4,4,4.

    因為在本專案當中,整個收集資料流程是這樣的:

           

當客戶訪問瀏覽器,在nginx上產生資料,然後每臺機開啟flume監聽日記動態生成,將新生成的資料傳送到kafka叢集,然後開啟兩個消費者,一個是hdfs消費者,將儲存到kafka叢集的資料直接進行儲存(原生資料),另外一個是hive消費者,從kafka叢集中提取資料,然後進行資料清洗進行實時計算等等。。為了優化hdfs的儲存,需要將每日生成的資料在hdfs中以時間來命名,所以,這時需使用到了centos的排程(最小到分鐘)即nginx的日記滾動。

使用centos的cron機制實現nginx的日誌滾動。(排程)
-----------------------------------------------
    [/usr/local/bin/rolllog.sh]
#!/bin/bash
#
dataformat=`date +%Y-%m-%d-%H-%M`
#
cp /soft/nginx-1.6.3/logs/access.log /soft/nginx-1.6.3/logs/access_$dataformat.log
host=`hostname`
sed -i 's/^/'${host}',&/g' /soft/nginx-1.6.3/logs/access_$dataformat.log
#
lines=`wc -l < /soft/nginx-1.6.3/logs/access_$dataformat.log`
#move access-xxx.log flume's spooldir
mv /soft/nginx-1.6.3/logs/access_$dataformat.log /soft/nginx-1.6.3/logs/flume
#delete rows
sed -i '1,'${lines}'d' /soft/nginx-1.6.3/logs/access.log
#reboot nginx , otherwise log can not roll.
kill -USR1 `cat /soft/nginx/logs/nginx.pid`

然後編輯cron配置
        $>sudo nano /etc/crontab
            [/etc/crontab]
            ...
            PATH=...:/usr/local/bin
            ...
            * * * * * centos testcron.sh
         
         儲存退出。

        重啟crontab伺服器
        $>sudo service crond restart

        會發現在

每分鐘產生一個以時間命名的檔案,裡面存放的是此時間段使用者訪問的資料。