SEnginx 的问题

hongshenghe 发布于 2013/08/05 14:07
阅读 1K+
收藏 1

@InfoHunter 你好,想跟你请教个问题:

1.SEnginx persistence问题

文档http://www.senginx.org/cn/index.php/%E6%96%87%E6%A1%A3#HTTP_Persistence

upstream pool1 {
        persistence http_cookie cookie_name=senginxforward timeout=30;
        server 192.168.1.101;
        server 192.168.1.102;
}
后端的节点需要做什么特殊设置吗?

2.SEnginx有做个性能测试吗?效果怎么样,有能提供的数据吗?


加载中
0
InfoHunter
InfoHunter

Hi,

1)后端server不需要特殊设置,senginx给后端server的response中插入一个cookie用于persistence,后端server不知道插入cookie这事的发生

2)目前有基于每秒HTTP事务数的测试,但是不知道是否符合你的需求?可能性能指标的定义有些许偏差,我们的结果是:

硬件:Dell R210,X3430 2.4GHz/4G内存/两个Intel千兆口,跑Get 1KB页面,走HTTP/1.1

性能是TPS 40000,延迟0.4ms,HTTP吞吐量千兆口跑满(将近1G)

华兹格
华兹格
回复 @InfoHunter : 问题已经发布了,希望关注并解决,谢谢啦!~地址:http://www.oschina.net/question/131681_120757
InfoHunter
InfoHunter
回复 @hanzhankang : :-),惭愧啊,高手根本算不上啊,水平其实比较一般。你需要哪方面的普及贴呢?我最近正好有点时间。列个需求吧,比如是关于开发方面的,或者如何使用之类的……
华兹格
华兹格
高手啊,能写一下普及贴吗?对这个项目很感兴趣啊!
0
华兹格
华兹格
真快啊,这么快就适用了啊
0
hongshenghe
hongshenghe

引用来自“hanzhankang”的答案

真快啊,这么快就适用了啊
没用,只是好奇,感觉好棒 
0
InfoHunter
InfoHunter
但是有一点需要注意,就是senginx给客户端设置的cookie,会随着浏览器的请求交给后端server,senginx目前在persistence的时候没有对这个cookie进行删除操作,所以后端的服务器会接到这个cookie,但是一般来讲不会有啥大问题,后端服务器直接忽略就行了
廖君
廖君
回复 @InfoHunter : :)
InfoHunter
InfoHunter
回复 @廖君 : 对于后端服务器来说,就是相当于在收到的request中多了一个它从未设置过的cookie,因此直接忽略就行了,之所以没在senginx中将这个cookie找出来再剔出去,是为了性能。 如果在实际使用中发生了确实需要将此cookie剔除然后再将request交给后端server的场景,请及时通知我们,我们可以对应处理
廖君
廖君
会出现什么问题呢?因为当生产环境过大,那么问题可能也会放大。希望能够解读一点
0
sx4
sx4

能介绍下cookie用于持久(连接?)的详情吗?

nginx 1.2开始就支持前后端keep-alive了, 而且没有时间限制

0
InfoHunter
InfoHunter

cookie持久连接指的是在负载均衡的过程中保证同一条http会话被分配到同一个后端服务器,和nginx的keep-alive没关系。例如:

client -> senginx -> backend1
                           -> backend2

如果使用轮询的负载均衡算法,则会第一次走1,第二次走2,cookie persisitence可以保证第二个请求依然走1

nginx的对后端的keepalive其实是一个连接池的概念,发生在负载均衡算法选择后端服务器之后,可以在连接服务器的时候选择已有tcp连接,而不是重新建立连接

0
jasonchin221
jasonchin221
keep-alive的原理是在nginx与后端服务器之间完成一次交互后不关闭TCP连接,当nginx需要再次与后端服务器进行交互时可以直接使用这条TCP连接发送请求,不需要新建TCP连接,从而减少数据交互的开销,提高nginx的响应速度。keep-alive机制只是用于nginx与后端服务器交互的一种手段,与nginx进行后端服务器选取的决策没有关系。在流程上,nginx先根据负载均衡算法选取出目的后端服务器,然后再向其发送数据;对于SEnginx而言,它会先根据cookie persistence算法选取目的后端服务器(如果是初次访问或没有设置cookie persistence算法,则会根据负载均衡算法进行选取),然后再发送数据。发送数据时才去检查有没有可以的已有TCP连接,如果有则直接使用,如果没有则先新建一个,然后再发送数据。
benney
benney
很详细
0
z
zhouhenry
厉害,用得着
返回顶部
顶部