Oct
30

freebsd top显示 interrupt 很高,中断风暴的解决办法

最近几天数据开始起来了
1. nginx: 502开始第一次在自己的机器上见到。 (目前分析出来的原因和网上的是不一样的。但本质上差不多。 主要还是程序的执久处理造成的,优化后,目前没见到了)

2. freebsd 中断,拒绝响应。
(interrupt几乎在100%, 但后来重启后,正常了,但此值没降下来。)
所以目前分析不出来。仍在观察。 目前只拒绝80请求,其它正常。所以有点看不过来

系统停止响应 (暂时或永久性地)
  绝大多数系统停止响应是由于未能及时响应中断或发生了中断风暴导致的。芯片组有很多问题最终会溯源到 BIOS 如何在引导系统之前配置中断, APIC (MADT) 表的正确性, 以及 系统控制中断 (SCI) 如何路由。

  通过察看 vmstat -i 的输出中包括 acpi0 的那一行可以区分中断风暴和未能及时响应中断。如果每秒计数器增长的速度多于一两个, 则您是遇到了中断风暴。 如...

0 Comments
Oct
23

nginx upstream的五种分配方式

  nginx的upstream目前支持5种方式的分配
  1、轮询(默认)
  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2、weight
  指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  例如:

upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

  3、ip_hash
  每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  例如:

upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

  4...

0 Comments
Sep
24

使用Nginx代理模式,后端程序得到用户IP的方法

在nginx中设置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
后端程序可以从Server变量HTTP_X_REAL_IP和HTTP_X_FORWARDED_FOR中获取用户的ip地址。
HTTP_X_REAL_IP的值是nginx得到的用户REMOTE_ADDR

0 Comments
Sep
23

session sticky

先来个标题党,有时间再慢慢写

session复制,对于集群策略很有用,但是否完全可靠还不得知。 (目前apache,nginx均有相关介绍)

另值得看的几篇文章

1. 《nginx负载均衡器处理session共享的几种方法

2. 《nginx_upstream_hash 增加一致性hash

0 Comments