小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

百萬(wàn)級(jí)高并發(fā)網(wǎng)站mysql應(yīng)用攻略

 hi360doc 2009-03-29
在長(zhǎng)時(shí)間的網(wǎng)站開發(fā)過(guò)程中,能作一個(gè)百萬(wàn)ip的網(wǎng)站對(duì)我來(lái)說(shuō)真是一個(gè)新的挑戰(zhàn),由于本人的水平有限,所以一直就職于一個(gè)小公司,在這里也只是抱著重在參與的想法。在以后我所講述到的內(nèi)容知識(shí)點(diǎn)上如有不適之處請(qǐng)大家多多批評(píng)指教。

 

   在一開始接觸php接觸mysql的時(shí)候就聽不少人說(shuō):“mysql就跑跑一天幾十萬(wàn)ip的小站還可以,要是幾百萬(wàn)ip就不行了”,原話不記得了,大體就是這個(gè)意思。一直也沒(méi)有好的機(jī)會(huì)去驗(yàn)證這個(gè)說(shuō)法,一是從沒(méi)有接手過(guò)這么大流量的網(wǎng)站,二是平時(shí)工作也比較忙,懶得去管這些,反正現(xiàn)在用不著,抱著這個(gè)想法把這個(gè)問(wèn)題一直留到了最近,才把這個(gè)問(wèn)題搞明白。

   就在前幾天公司旗下一網(wǎng)站(由于這是公司的商業(yè)內(nèi)容我就不說(shuō)是那個(gè)網(wǎng)站了,免得有兄弟說(shuō)是ad)以下簡(jiǎn)稱a站,這a站在年后流量猛增從一天的七八十萬(wàn)猛跑到了好幾百萬(wàn)的ip,一天下來(lái)接近一千萬(wàn)的pv讓整個(gè)服務(wù)器在高壓下超負(fù)荷的工作著,時(shí)不時(shí)的服務(wù)就出現(xiàn)當(dāng)機(jī)。

   最首先反映出情況的是數(shù)據(jù)統(tǒng)計(jì),一天下來(lái)一個(gè)數(shù)據(jù)也沒(méi)有統(tǒng)計(jì)上,原來(lái)是mysql掛了。

   本文就圍繞這個(gè)問(wèn)題來(lái)講講我們公司幾個(gè)技術(shù)人員的解決方案。

   1. mysql服務(wù)器集群

   由于是小公司在資金和成本上都有所限制,而且在技術(shù)上也沒(méi)有幾個(gè)技術(shù)員接觸過(guò),所以這個(gè)方法自然就讓大伙否決了。

   這里說(shuō)說(shuō)我個(gè)人的理解!做集群不但添加資費(fèi)的開銷,而且在技術(shù)上也有很大的挑戰(zhàn),對(duì)于我們公司目前的情況是不大現(xiàn)實(shí)的。集群無(wú)非就是把一臺(tái)服務(wù)器的壓力轉(zhuǎn)接到兩臺(tái)或是多臺(tái)服務(wù)器上,我是這么理解的,也許我理解有誤,還請(qǐng)大家指教。

   2. 分而治之

   這個(gè)方法和集群差不多,不過(guò)是把統(tǒng)計(jì)的代碼放在不同的服務(wù)器上跑,由于公司有不少配置低的服務(wù)器跑幾萬(wàn)到幾十萬(wàn)ip還是沒(méi)有問(wèn)題的,我們可以把幾百萬(wàn)流量分成十來(lái)個(gè)幾十萬(wàn)的量分而統(tǒng)計(jì)。

   優(yōu)點(diǎn):充分的利用了現(xiàn)在的資源,解決了目前的問(wèn)題。

   缺點(diǎn):這樣的方法不是長(zhǎng)久之計(jì),遲早還是會(huì)出問(wèn)題的。而且在統(tǒng)計(jì)數(shù)據(jù)的時(shí)候比較麻煩。

   3. 統(tǒng)計(jì)代碼的修改

   由于之前采用的是在插入數(shù)據(jù)之前加以判斷,這個(gè)ip是否存在,來(lái)路等的處理,無(wú)形中增加了服務(wù)器的壓力,所以大伙把統(tǒng)計(jì)代碼改成來(lái)一個(gè)就插入數(shù)據(jù)庫(kù),不管三七二十一等以后在處理。

   這個(gè)方法基本上把當(dāng)天的數(shù)據(jù)保留下來(lái)了,可是在處理的時(shí)候由于數(shù)據(jù)量的龐大,來(lái)來(lái)回回還是把服務(wù)器跑死了,而且在插入的時(shí)候由于當(dāng)時(shí)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的時(shí)候留有的索引,也大大的消耗了不少的服務(wù)器資源。

   那么把索引去掉到最后處理的時(shí)候又是老慢的,得不償失。

   4. 統(tǒng)計(jì)方式的修改

   最后這一個(gè)方法,效果非常的明顯。那是什么方法呢!

   這里就主要介紹這個(gè)方法:

   a、 保留原用的數(shù)據(jù)結(jié)構(gòu)不變,并把所有的數(shù)據(jù)按一定的結(jié)構(gòu)存入文件。

   結(jié)構(gòu):可以是xml json,也可以是你自己想的任何有規(guī)律的數(shù)據(jù)排放。

   例如:

 1 221.2.70.52 http://www.baidu.com windowxp\r\n
 2 221.2.70.52 http://www.baidu.com windowxp\r\n
   寫入文件:fopen,fwrite??no 這里介紹一個(gè)非常好用的技巧,也許大家都知道,但是像我這樣的菜鳥大概都不知道,那就是用error_log,這不是寫錯(cuò)誤日志的嗎?對(duì)就是他,非常方便。

   格式:

 1 error_log(" 內(nèi)容"   3  " /date.dat" ) 
   這里我就不說(shuō)他的具體用了,不明白的朋友可以查一下手冊(cè)。

   b、數(shù)據(jù)文件的命名

   為什么這里要講文件的命名呢?如果就一味的把數(shù)據(jù)的寫入文件不作任何的處理那么他和直接插入數(shù)據(jù)庫(kù)有多大的區(qū)別呢?那么我們所作的一切都是無(wú)用功了。

   首先是在時(shí)間的利用上:date(‘ymdh’)得到的值是如:2008121112這有什么好入,這樣一來(lái)這個(gè)數(shù)據(jù)就是一個(gè)小時(shí)一個(gè)文件必免了文件過(guò)大,而且不用去判斷自動(dòng)生成。

   ip的應(yīng)用:由于在很多數(shù)據(jù)上都是一個(gè)ip操作的,所以把相同ip的數(shù)據(jù)放在一個(gè)文件里在后面的處理就非常方便處理。請(qǐng)看后面的介紹,這里我們?nèi)p成三位為文件名字的一部分。

   c、 數(shù)據(jù)的導(dǎo)入處理

   通過(guò)以上兩位的操作當(dāng)天的數(shù)據(jù)會(huì)一個(gè)不少的保留下來(lái),接下來(lái)怎么處理其實(shí)并不是很重要了。但是這里還是講講我的想法。

   入庫(kù)前處理:

   前面講到把ip三位相同的放一個(gè)文件就是為了入庫(kù)前到它們進(jìn)行處理,首先可以用最笨的方法把數(shù)據(jù)拆成n個(gè)數(shù)據(jù)。在進(jìn)行重復(fù)數(shù)據(jù)的刪除。

   如果一個(gè)ip瀏覽多頁(yè)那么pv在這里就可以得到統(tǒng)計(jì),并把訪問(wèn)的頁(yè)面進(jìn)行處理,組成新的數(shù)據(jù)。

   導(dǎo)入方法:

   這里要介紹一下數(shù)據(jù)的導(dǎo)入方法

 1 $sql=" load data infile ' " .$file." '  into table `test` fields terminated by '  '  lines terminated by ' \r\n' (
 2 
 3   `time`   `md5`
 4 
 5   )"  
   就這一個(gè)語(yǔ)句,在導(dǎo)入幾十萬(wàn)數(shù)據(jù)的時(shí)候可以說(shuō)是刷刷的,用法我這里也不過(guò)多介紹了,大家有不明白的可以查手冊(cè),所以說(shuō)解決數(shù)據(jù)庫(kù)的瓶頸的辦法不定要加設(shè)備,也不一定要換數(shù)據(jù)庫(kù),只要換一個(gè)思路就能解決不少問(wèn)題。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多