码迷,mamicode.com
首页 > 系统相关 > 详细

Linux环境下高并发服务器构建手记

时间:2015-07-01 15:53:47      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

最近用Golang做了一个项目,产品需求是“单服要达到5000并行处理”

硬件配置如下:

CPU:Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz

MEM:32G

DISK:SCSI 600G 10000转/秒

OS:Centos 6.6

好了,先解决并发连接问题,对linux系统环境做了一些优化,优化过程如下:

优化内核参数:

1:修改系统资源限制文件:/etc/security/limit.conf

参照配置文件帮助描述,添加如下配置

* hard nofile  1025500
* soft nofile  1025500
server  hard nproc   181960
server  soft nproc   181960

2:修改系统控制配置文件:/etc/sysctl.conf

添加如下配置,每个选项是请自行百度或查阅相关书籍

添加完后记得:sysctl –p 以确保起作用

fs.file-max=1025500
net.nf_conntrack_max=1025500
net.netfilter.nf_conntrack_max=1025500
net.core.netdev_max_backlog=30000
net.core.somaxconn=10000
net.core.rps_sock_flow_entries=32768
net.ipv4.tcp_max_syn_backlog=10000
net.ipv4.tcp_max_tw_buckets=10000
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_tw_recycle=0
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_synack_retries=10
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_keepalive_time=180
net.ipv4.tcp_keepalive_intvl=30

net.ipv4.tcp_keepalive_probes=5
net.ipv4.ip_local_port_range=1024 65535

kernel.sem = 10240 671078400 10240 65535

好了,到此为止,已经可以达到并发连接100W,是没问题了,但并意味着单个物理机就能并行处理

100W,还会受各种IO限制比如磁盘IO等等.

此时测试单服处理能力:1500并发连接,每个连接处理200个事务

测试结果:根据统计结果,有513笔业务处理时长超过1s,单笔处理时长最长已达:1min24s

显然这个结果离产品需求相去甚远,为了取得更好性能需求,下面做进一步的负载均衡,我

首先采用广受赞誉的nginx做一个简单的负载均衡

Nginx负载均衡设置:

在http节点添加如下设置:

map $http_upgrade $connection_upgrade {
        default upgrade;
        ‘‘      close;
    }
   upstream honorServer {
    server 127.0.0.1:6620 weight=2;
    server 127.0.0.1:6520;
   }

   server {

         listen       7878;   
         server_name localhost;

        location / {

            proxy_pass http://honorServer;

            proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
        }
    }

未完待续…

Linux环境下高并发服务器构建手记

标签:

原文地址:http://www.cnblogs.com/sunvim/p/4613211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!