亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3315 | 回復(fù): 7
打印 上一主題 下一主題

[C++] 我寫的Redis3.0集群代理運(yùn)行時(shí)CPU 100% [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-07-01 18:56 |只看該作者 |倒序?yàn)g覽
31900 guoyinli  20   0  861m 7184  656 R 99.6  0.2  19:57.05 RedisClusterPro                                                                                            
31899 guoyinli  20   0  925m 9312  744 R 99.2  0.2  19:50.19 RedisClusterPro                                                                                            
31915 guoyinli  20   0  989m 5152  656 R 82.3  0.1  20:03.31 RedisClusterPro                                                                                            

采用多進(jìn)程多線程架構(gòu):

1.Accept一個(gè)線程;

2.異步接收客戶端數(shù)據(jù)和發(fā)送3個(gè)線程,接收數(shù)據(jù)后以List存儲(chǔ);

3.同步發(fā)送List數(shù)據(jù)到3臺緩存服務(wù)器(根據(jù)key的哈希槽),并同步接收緩存服務(wù)器的數(shù)據(jù)存儲(chǔ)于客戶端socket的發(fā)送緩沖區(qū),由第2步中的線程發(fā)送給客戶端,

   這部分10個(gè)線程,每個(gè)線程維持3個(gè)緩存服務(wù)器的連接,同步接收發(fā)送數(shù)據(jù);

4.動(dòng)態(tài)配置信息更新1個(gè)線程.

相關(guān)事件控制用epoll_wait,List數(shù)據(jù)存取也有鎖和信號控制,我就想不明白怎么每個(gè)進(jìn)程CPU 差一點(diǎn)就100%?

論壇徽章:
36
子鼠
日期:2013-08-28 22:23:29黃金圣斗士
日期:2015-12-01 11:37:51程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-14 06:20:00CU十四周年紀(jì)念徽章
日期:2015-12-22 16:50:40IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-25 06:20:0015-16賽季CBA聯(lián)賽之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16賽季CBA聯(lián)賽之福建
日期:2016-04-07 11:25:2215-16賽季CBA聯(lián)賽之青島
日期:2016-04-29 18:02:5915-16賽季CBA聯(lián)賽之北控
日期:2016-06-20 17:38:50技術(shù)圖書徽章
日期:2016-07-19 13:54:03程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-08-21 06:20:00
2 [報(bào)告]
發(fā)表于 2015-07-01 19:16 |只看該作者
沒代碼猜起來好累

論壇徽章:
154
2022北京冬奧會(huì)紀(jì)念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16賽季CBA聯(lián)賽之深圳
日期:2022-11-02 14:02:4515-16賽季CBA聯(lián)賽之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16賽季CBA聯(lián)賽之八一
日期:2023-11-04 19:23:5115-16賽季CBA聯(lián)賽之廣夏
日期:2023-12-13 18:09:34
3 [報(bào)告]
發(fā)表于 2015-07-01 20:47 |只看該作者
list可以加鎖,有沒有這個(gè)嘗試

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2015-07-02 09:17 |只看該作者
找到原因,動(dòng)態(tài)配置信息更新線程以前是不停循環(huán),現(xiàn)在改為1分鐘刷新一次,CPU立馬降到1%以下啦。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2015-07-02 11:42 |只看該作者
客戶端代碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>

int main(int argc, char * argv[])
{
        struct sockaddr_in sAddr;
    int nConnectSocket;
    int nFlag = 1,nRet = 0;
        int nPort = 7777;
        char * sIP = "10.12.8.154";
        char sTempBuff[100] = {0};

    memset(&sAddr, 0, sizeof(sAddr));
    sAddr.sin_family = AF_INET;
    sAddr.sin_port = htons(nPort);
    sAddr.sin_addr.s_addr = inet_addr(sIP);
       
    for(int i = 1; i <100; i++)
    {
        sleep(1);
        if(fork() == 0) //子進(jìn)程
        {
                        printf("Child process:%d\n",getpid());
            break;
        }
    }       

    nConnectSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (nConnectSocket < 0)
    {
                printf("New socket failed:%s!",strerror(errno));
        return -1;
    }
       
        if (connect(nConnectSocket,(struct sockaddr*)&sAddr, sizeof(sockaddr)) == -1)
        {
                printf("Connect redis server(%s:%d) failed:%s!",sIP,nPort,strerror(errno));
                close(nConnectSocket);
                return -1;
        }       
       
        sprintf(sTempBuff,"*2\r\n$6\r\nEXISTS\r\n$31\r\nt_cp_blacklist_user:13502399876\r\n");
       
        while (1)
        {
                nRet = send(nConnectSocket,sTempBuff,strlen(sTempBuff),0);
                if (nRet <= 0)
                {
                        printf("Send failed\n");
                        close(nConnectSocket);
                        break;
                }

                char recvBuff[100] = {0};
                nRet = recv(nConnectSocket,recvBuff,sizeof(recvBuff),0);
                if (nRet <= 0)
                {
                        printf("Recv failed\n");
                }
                else
                {
                        printf("Recv:%s\n",recvBuff);
                }
        }
       
        return 0;
}

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2015-07-02 11:44 |只看該作者
現(xiàn)在100個(gè)客戶端進(jìn)程并發(fā)訪問,Redis集群代理TOP如下:

13302 guoyinli  20   0  989m 7280  688 S 48.7  0.2   2:09.95 RedisClusterPro                                                                                            
13301 guoyinli  20   0  989m 7368  776 S 48.1  0.2   3:38.57 RedisClusterPro                                                                                            
13317 guoyinli  20   0  989m 7248  660 S 47.7  0.2   2:19.76 RedisClusterPro

客戶端TOP:

6687 acs       15   0 11428  344  212 S  0.6  0.0   0:01.55 ClientTest                                                                                                
6700 acs       15   0 11428  344  212 S  0.6  0.0   0:01.20 ClientTest                                                                                                
6714 acs       15   0 11428  344  212 S  0.6  0.0   0:01.01 ClientTest                                                                                                
6745 acs       15   0 11428  344  212 S  0.6  0.0   0:00.84 ClientTest                                                                                                
6751 acs       15   0 11428  344  212 S  0.6  0.0   0:00.94 ClientTest                                                                                                
6768 acs       15   0 11428  344  212 S  0.6  0.0   0:00.94 ClientTest                                                                                                
6776 acs       15   0 11428  344  212 S  0.6  0.0   0:00.80 ClientTest                                                                                                
6785 acs       15   0 11428  344  212 S  0.6  0.0   0:00.82 ClientTest                                                                                                
3220 mgoms     24   0  282m 6908 3956 S  0.3  0.0   0:22.74 bas_router                                                                                                
6674 acs       15   0 11428  944  816 S  0.3  0.0   0:00.56 ClientTest                                                                                                
6675 acs       15   0 11428  344  212 S  0.3  0.0   0:01.79 ClientTest                                                                                                
6677 acs       15   0 11428  344  212 S  0.3  0.0   0:01.74 ClientTest                                                                                                
6678 acs       15   0 11428  344  212 S  0.3  0.0   0:01.61 ClientTest                                                                                                
6682 acs       15   0 11428  344  212 S  0.3  0.0   0:01.54 ClientTest                                                                                                
6683 acs       15   0 11428  344  212 S  0.3  0.0   0:01.34 ClientTest                                                                                                
6684 acs       15   0 11428  344  212 S  0.3  0.0   0:01.40 ClientTest                                                                                                
6685 acs       15   0 11428  344  212 R  0.3  0.0   0:01.47 ClientTest                                                                                                
6686 acs       15   0 11428  344  212 S  0.3  0.0   0:01.60 ClientTest                                                                                                
6688 acs       15   0 11428  344  212 S  0.3  0.0   0:01.39 ClientTest                                                                                                
6692 acs       15   0 11428  344  212 S  0.3  0.0   0:01.20 ClientTest                                                                                                
6693 acs       16   0 11428  344  212 S  0.3  0.0   0:01.26 ClientTest                                                                                                
6694 acs       15   0 11428  344  212 S  0.3  0.0   0:01.16 ClientTest                                                                                                
6696 acs       15   0 11428  344  212 S  0.3  0.0   0:01.05 ClientTest                                                                                                
6697 acs       15   0 11428  344  212 S  0.3  0.0   0:01.17 ClientTest                                                                                                
6698 acs       16   0 11428  344  212 S  0.3  0.0   0:01.13 ClientTest                                                                                                
6701 acs       15   0 11428  344  212 S  0.3  0.0   0:01.00 ClientTest                                                                                                
6704 acs       15   0 11428  344  212 S  0.3  0.0   0:01.01 ClientTest                                                                                                
6708 acs       15   0 11428  344  212 S  0.3  0.0   0:01.30 ClientTest                                                                                                
6710 acs       15   0 11428  344  212 S  0.3  0.0   0:00.91 ClientTest                                                                                                
6712 acs       15   0 11428  344  212 S  0.3  0.0   0:00.91 ClientTest                                                                                                
6715 acs       15   0 11428  344  212 S  0.3  0.0   0:01.20 ClientTest                                                                                                
6717 acs       15   0 11428  344  212 S  0.3  0.0   0:01.15 ClientTest                                                                                                
6718 acs       15   0 11428  344  212 S  0.3  0.0   0:01.06 ClientTest                                                                                                
6719 acs       15   0 11428  344  212 S  0.3  0.0   0:00.97 ClientTest

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2015-07-02 11:46 |只看該作者
服務(wù)端配置:

IP = 10.12.8.154
Port = 7777
ProcessNum = 3
IOThreadNum = 3
ProxyThreadNum = 10

RedisSlotNum = 16384
RedisSlotDist = 10.12.8.154:6379(10923-16383);10.12.8.155:6379(5461-10922);10.12.8.156:6379(0-5460);
SendTimeOut = 1500
RecvTimeOut = 1500
SocketTimeOut = 300000
LogLevel = 7

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2015-07-13 12:28 |只看該作者
相關(guān)代碼見博客戶園cnblogs.com/guoyinglin/p/4604279.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP