自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于流量升高導(dǎo)致TIME_WAIT增加,MySQL連接大量失敗的問題

運(yùn)維 系統(tǒng)運(yùn)維
搜索有個(gè)應(yīng)用就是每次都會(huì)去查一個(gè)接口,接口返回用戶的信息數(shù)據(jù),從而展現(xiàn)不同的篩選和排序效果。大致流程如下

 搜索有個(gè)應(yīng)用就是每次都會(huì)去查一個(gè)接口,接口返回用戶的信息數(shù)據(jù),從而展現(xiàn)不同的篩選和排序效果。大致流程如下

    s.taobao.com(hz)-> memcache ->電信custom接口 ->master-db

    s.taobao.com(qd)-> 網(wǎng)通custom接口 -> slave-db

    接口環(huán)境是php(cgi) + nginx,接口已經(jīng)運(yùn)行很久,未出過異常

    搜索訪問custom接口,然后接口去查數(shù)據(jù)庫(kù)(數(shù)據(jù)庫(kù)是主從復(fù)制,數(shù)據(jù)同步,各自機(jī)房讀各自的數(shù)據(jù)庫(kù),寫的話都寫master-db)

    有一點(diǎn),就是電信機(jī)房是有memcache層的,而網(wǎng)通機(jī)房一直沒有(考慮到網(wǎng)通機(jī)房流量不高,并且機(jī)房cache不同步,從上線起就網(wǎng)通機(jī)房一直未使用cache)

    有一次搜索上線,這個(gè)上線的版本有個(gè)改動(dòng)就是把電信機(jī)房的memcache也取消了,然后 電信機(jī)房流量暴增

    看pv統(tǒng)計(jì):

    [admin@linux ~]$ xxx.sh “find ./ -name ‘access*’|xargs wc -l|awk ‘END{print$1}’” fe

    cmd :find ./ -name ‘access*’|xargs wc -l|awk ‘END{print }’

    type:fe

    server1

     27720029 total(28號(hào)是11428684total)

    ———-

    server2

     27719910 total(28號(hào)是11429158total)

    ———-

    server3

     21084539 總計(jì)

    ———-

    server4

     21086051 total

    網(wǎng)通機(jī)房流量一直都是2KW左右,從未出任何問題

    就是昨天電信custom接口流量暴增后,出現(xiàn)了異常,電信機(jī)房機(jī)器負(fù)載一度達(dá)到48左右,QPS達(dá)到1533,直到凌晨0:24分才降到1以下

    應(yīng)用也報(bào)了短暫的超時(shí)警報(bào),不過php和nginx運(yùn)行還是比較蛋定,重啟依然非???,終端也沒有出現(xiàn)很卡的情況

    29號(hào)流量:

     

    28號(hào)流量:

     

    異常就是error.log在上線后飆到3個(gè)G?。?!

    而且錯(cuò)誤全都是Can’t connect to MySQL server on ’1.1.1.1′ (99)

    即便在命令行下用mysql -h1.1.1.1 -u -p

    也間歇性地連接不上,但是據(jù)dba描述,數(shù)據(jù)庫(kù)監(jiān)控?zé)o任何異常,數(shù)據(jù)庫(kù)上其他部門的應(yīng)用也無異常

    不知是否機(jī)器負(fù)載過高導(dǎo)致大量time wait,導(dǎo)致mysql連接超時(shí)或連接不上

    以下是晚上0點(diǎn)13分的監(jiān)控:

    80端口連接數(shù)(CurrentConnection): 16

    nginx進(jìn)程數(shù)量: 10

    php進(jìn)程數(shù)量: 130

    TCP連接狀態(tài):

    TIME_WAIT 26258(不知是否和他有關(guān))

    FIN_WAIT1 1

    FIN_WAIT2 6

    ESTABLISHED 893

    按理說,custom的網(wǎng)通接口流量一直是日均2KW,從未出現(xiàn)過異常,杭州機(jī)房接口飆到2.7KW就抗不住了,load直線上升,

    為了排除cache引起的流量導(dǎo)致接口異常,22:30左右重新上了2個(gè)文件,把杭州機(jī)房的memcache重新開啟,

    開啟后慢慢load是降了,但是mysql錯(cuò)誤依舊只是沒那么多了

    現(xiàn)在去機(jī)器上看,還是大量錯(cuò)誤,提取日志如下

    2011/12/3010:23:58 [error] 23859#0: *19554416 FastCGI sent in stderr: “PHPWarning: mysql_connect() [

    后來跟dba不斷溝通排查,發(fā)現(xiàn)電信機(jī)房和網(wǎng)通機(jī)房的/etc/sysctl.conf配置有所區(qū)別

    網(wǎng)通機(jī)房多了下面幾行

    net.ipv4.tcp_syncookies =1

    net.ipv4.tcp_tw_reuse = 1

    net.ipv4.tcp_tw_recycle =1

    net.ipv4.tcp_fin_timeout= 5

    原因就在這,把配置同步到杭州機(jī)房后,問題就解決了,總結(jié)如下:

  • 問題描述
  • 上線異常導(dǎo)致qps:1500+,負(fù)載:48+,雖然nginx+php表示很淡定沒掛,但error.log飆到了3G/天,全是Can’t connect to MySQL server on ‘*.*.*.*’ (99)
  • 解決異常后,error.log日志少了,但TIME_WAIT依舊減不下去,數(shù)據(jù)庫(kù)依舊連接是失敗
  • 問題排查
  • Mysql Config ? (no problem)
  • max_connect_errors = 50000 (no problem)
  • max_connections = 1000 (no problem)
  • max_user_connections = 950 (no problem)
  • OS Config ? (problem, 按以下修改問題就解決了)
  • vi /etc/sysctl.conf// 編輯net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1

        net.ipv4.tcp_tw_recycle = 1

        net.ipv4.tcp_fin_timeout = 5

        // 讓參數(shù)生效

        /sbin/sysctl -p

  • 問題原因
  • 報(bào)錯(cuò)”Can’t connect to MySQL server on ‘*.*.*.*’ (99) ” 參考MySQL Client端錯(cuò)誤代碼說明:錯(cuò)誤代碼為99,99的含義:$perror 99 OS error code 99: Cannot assign requested address 這是一個(gè)本地OS的拋錯(cuò),表示無法分配本地地址資源(應(yīng)該是端口),socket無法創(chuàng)建
  • Google一下” Cannot assign requested address”,多半是由于客戶端請(qǐng)求過于頻繁,而Server端練級(jí)關(guān)閉后本地暫時(shí)處于TIME_WAIT,所以暫時(shí)端口都不可用導(dǎo)致。因此修改下OS參數(shù)就ok了
  • 問題反思
  • 這個(gè)問題非常緊急么?緊急!
  • 參考文章《nginx+php產(chǎn)生大量TIME_WAIT》:http://leven.blog.51cto.com/1675811/382097,遇到這樣的問題,我們應(yīng)該第一時(shí)間想到端口不可用,首先會(huì)導(dǎo)致nginx連不上php-cgi導(dǎo)致服務(wù)不可用,其次才是php-cgi連不上mysql,因此非常重要!
  • 為什么mysql不使用長(zhǎng)連接pconnection呢?
  • pconnection mysql占用大量資源,并且在大并發(fā)情況下,例如個(gè)性化,活動(dòng)促銷等,連接過多導(dǎo)致無數(shù)的連接失敗error,并牽制apache(nginx)ThreadsPerChild的參數(shù)
  • 高并發(fā)下的最佳實(shí)踐?
  • apache短連接,nginx短連接,mysql短連接,雖然TIME_WAIT多了,但可通過修改OS內(nèi)核加速TIME_WAIT的復(fù)用,經(jīng)驗(yàn)之談?。?/li>

【編輯推薦】

  1. Linux中history歷史命令使用方法詳解
  2. Linux下使用mke2fsk格式化分區(qū)的方法
  3. Ubuntu 11.10 利用終端環(huán)境備份還原
責(zé)任編輯:趙寧寧
相關(guān)推薦

2020-08-06 10:12:20

TCP連接網(wǎng)絡(luò)協(xié)議

2017-06-09 10:16:40

2021-09-30 14:23:23

服務(wù)器開發(fā)工具

2015-03-27 10:18:25

TCP協(xié)議CLOSE_WAIT狀服務(wù)器異常

2024-01-19 19:22:45

TCPTIME_WAIT

2024-10-12 14:58:07

2017-07-05 14:14:33

MySQL表服務(wù)變慢

2010-09-14 12:59:18

Wi-Fi無線連接失敗

2010-12-10 08:51:13

Web 2.0Cache集群

2021-07-12 09:09:54

Go 連接池緩存

2011-07-03 18:36:59

流量

2022-12-08 15:29:59

開發(fā)應(yīng)用應(yīng)用申請(qǐng)權(quán)限

2011-06-07 11:07:39

路由流量

2013-10-23 11:22:47

HadoopHadoop處理大量小

2013-10-23 10:48:30

HadoopHDFS文件處理

2011-08-05 13:41:18

mysql數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)配置

2024-10-07 08:59:47

sleepwait線程

2022-12-13 10:05:13

MySQL數(shù)據(jù)庫(kù)

2010-03-24 17:26:50

無線上網(wǎng)卡流量

2009-07-10 18:02:05

MyEclipseMySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)