问一个服务器性能问题哦。我现在有一个 html 页面。用 nginx 直接访问性能肯定很好。但是现在这个页面要检测一下 ip 才能访问。所以需要首先用 Node.js 或者 php 检测下 ip ,之后这个后端语言读取 html 页面内容,输出。 nginx , node.js 和 php 在完成这件事的性能差别能有多大。如果一天一百万 ip 的情况下。
1
xia0chun 2016-03-27 17:06:17 +08:00 via iPhone
为什么不用动态域名?
|
2
bazingaterry 2016-03-27 17:07:42 +08:00 via iPhone
单纯检测 ip nginx 也有相应的模块吧?
|
3
046569 2016-03-27 17:12:30 +08:00
使用 ngx_lua 或 ngx_mruby 来开发.LZ 的需求类似 WAF,如果简单的 IP 屏蔽直接用 ngx_http_access_module 就好了...
|
4
lecher 2016-03-27 17:32:34 +08:00 via Android
一百万一天的 PV ,平均下来峰值不超过二十每秒,只要不是非常耗性能的检测,任何语言都可以处理。
|
5
halfcrazy 2016-03-27 17:41:22 +08:00
好像看过一个 benchmark , netty 比 openresty 在输出静态页上要快
|
6
laodao OP @lecher 差不多一百万 ip 。 pv 可能在一千万。关键是高峰期在晚上。之前晚上高峰期数据库就因为内存挂了。其实没用数据库。但是一到高峰期数据库就给整挂了。
|
8
lecher 2016-03-27 19:35:44 +08:00 via Android
单机处理千万 PV 的静态页面,主要看检测 IP 这个算法到底怎么样了。
如果考虑未来业务攀升的扩展, PHP 应该可以淘汰了,它开辟进程处理业务完成之后销毁变量这套 gc 机制不太适合这种业务。新浪之前用过 PHP 处理业务,也扛得住,就是性能差点服务器费用要高一些。 同类的业务,用常驻内存的模型 go 、 openresty 的成功案例比较多。都是 qps 万级别的性能。 如果熟悉 nodejs , nodejs 也是可选方案, nodejs 的性能比 go 差,但是优于 Python tornado 。 Nginx 有支持 js 的版本: https://www.nginx.com/blog/nginscript-why-our-own-javascript-implementation/ https://www.nginx.com/resources/wiki/nginScript/ 不过这是个实验版本,敢冒险可以试试。 |
10
abelyao 2016-03-27 19:56:00 +08:00 via iPhone
是检测单个 IP ,还是 IP 段,还是多个 IP 还是有区别的吧…
|