1、netty httpserver更高效吗
<script type="text/javascript">
Composite root = new Composite("root");
root.Add(new Leaf("Leaf A"));
root.Add(new Leaf("Leaf B"));
Composite comp=new Composite("Composite X");
comp.Add(new Leaf("Leaf XA"));
comp.Add(new Leaf("Leaf XB"));
root.Add(comp);
2、netty httpclient和httpclient的区别
netty是nio服务端客户端框架。可以快速简单的开发网络程序。
netty httpclient底层基于netty对版httpclient进行的实现。
httpclient你可能权指的是apache的httpclient组件。
2种实际上是实现的同一种工具,只是实现方式不一样。
可以理解为宝马和奥迪都是汽车,可以驾驶,但是是不同厂商使用不同工艺和技术制造出来的。
3、怎么使用netty写一个http长连接服务器
netty本身实现的长连接,就是一个连接一个worker。worker的数量是有限的(通常是cpu cores+1),所回以你的服务器要是答连接数多的话,得考虑使用“异步”Request(netty的http没实现这么个功能),或者说“Continuation”,当连接“无事可做”的时候,放弃线程的使用权,当要处理事务的时候,才重新拿到一个线程。
当然,如果你只想实现长连接而不在意request 一直占有worker,那么你只要不放弃连接就可以了(websocket本身也是一种长连接,netty里面有websocket的例子)。
4、netty和spring mvc+tomcat分别实现http 服务器个有什么优势
netty只是把实现了http协议的服务器。 tomcat不只实现了http协议还实现了 j2ee里的回servlet标准。tomcat是一个实现了servlet协议的容器,可以运行答servlet。spring mvc是是基于servlet之上的框架,核心是一个功能强大的servlet。
5、Netty适合做HTTP服务容器吗
这种需求来建议楼主用netty,原源因如下:
1.tomcat比较适合j2ee开发,因为其完整的实现了Servlet和JSP规范
2.tomcat处理高并发请求性能不够好,比如需要使用NIO时必须要安装APR插件,确实比较麻烦。
3.netty是一个性能非常好的java NIO网络框架,我们已经在诸多大项目中使用并验证。
所以:
如果性能要求不高,则选用tomcat 开发上更易用
如果对性能有要求,选用netty,当然其在使用上要更麻烦,最直接的启停监控脚本得自己来弄。
6、用Netty作http静态资源服务器,类似Nginx这样的,大一点的文件响应不正常怎么回事?
您好,对于你的遇到的问题,我很高兴能为你提供帮助,我之前也遇到过哟,以下是我的个人看法,希望能帮助到你,若有错误,还望见谅!。展开全部
Nginx+PHP-fpm组合,以内存占用小,负载能力强壮的特点,成为小内存vps建站的首选组合。我们一起来探讨一下nginx+php-fpm高负载的优化方法。
先来看看nginx配置参数的优化。nginx是前端接受浏览器端请求的web server, 配置可调的参数如下:
下面是示例nginx配置
user www-data;
worker_processes 8;
#worker_processes 调至8, 大于8没什么用,小于8,nginx性能发挥不出来
worker_cpu_affinity 01 10 01 10 01 10 01 10;
#worker_cpu_affinity 参数可以使nginx充分发挥多核Cpu的性能优势 ,上面的配置是针对双核CPU的配置。01表示第一个核,10表示第二个核,如果是四核cpu,一至四个核分别表示为 0001 0010 0100 1000
error_log /var/log/nginx/error_log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 10240;
#worker_rlimit_nofile 是nginx能打开文件的最大句柄数,我们需要把这个数字设大一点。
#linux系统的文件查看数限制查看是用 ulimit -n ,修改这个限制是用 ulimit -HSn 65535
events
{
use epoll;
#必须要用高效的event驱动,以获得最大性能
worker_connections 10240;
#max_clients = worker_processes * worker_connections/4 (最大连接数的计算公式)
}
http
{
include /etc/nginx/deny.iplist;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_name_in_redirect off;
server_names_hash_bucket_size 128;
server_tokens off;
client_header_buffer_size 32k;
#client头buffer可以调为32K
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfileon;
tcp_nopush on;
keepalive_timeout 65;
tcp_nodelayoff;
client_body_timeout 10;
client_header_timeout 10;
send_timeout 60;
output_buffers 1 32k;
postpone_output 1460;
open_file_cache max=1000 inactive=20s;
open_file_cache_valid30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 32k;
fastcgi_temp_file_write_size 32k;
gzip on;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_proxied expired no-cache no-store private auth;
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=staticfilecache:80m inactive=1d max_size=2500m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 300;
proxy_read_timeout 120;
proxy_send_timeout 120;
proxy_buffer_size 16k;
proxy_buffers 4 16k;
upstream wordpressnginx
{
server 127.0.0.1:6000 weight=1 fail_timeout=120s;
}
include /etc/nginx/sites-enabled/*;
}
上面的配置里面,有多处设及到buffer和timeout的地方。我们可以根据需要,慢慢调大这些参数,buffer自然是大点好,但不要太大。16K是标准配置,可以增加到32,往上加更大也不是不行,但 要考虑到你系统内存大不大,够不够用。timeout是超时,如果服务器很繁忙,不妨增加超时等待时间,以避免频繁出现502错误。
gzip是必须开启的,reverse proxy在允许的情况下,也尽量开启,一 是可以提升响应效率,二是降低服务器压力,gzip开启后更可以节省服务器带宽。
nginx主要的配置如上所述。
现在看一下php-fpm的配置。
[global]
pid = run/php5-fpm.pid
process_control_timeout = 5
[www]
listen = /dev/shm/php-cgi.sock
listen.allowed_clients = 127.0.0.1
user = www-data
group = www-data
pm = static
pm.max_children = 7
#这个决定了 php-fpm的总进程。我们要想同时响应更多的并发数,这个数值要尽可能大,比如500,1000
pm.max_requests = 10000
#并发数越大,这个最大请求数应该越大,并发数小,这个数值也应该越小。它表示,php-fpm进程响应了10000个并发请求之后,就自动重启一下进程。
request_terminate_timeout = 30
#表示等待30秒后,结束那些没有自动结束的php脚本,以释放占用的资源。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
小内存的vps虽然经过使用php-fpm+nginx,提升了系统的效率,可以同时响应较多的并发请求,但是当并发数上来了,比如从100上升到10000,小内存肯定响应不过来,cpu也会 因为太忙,而导致系统负载变得很高很高,这个时候,我们就要考虑升级硬件配置了。
内存越大越好,CPU核心频率越高越好,CPU核越多越好。硬盘最好是SSD+RAID10。这样性能不仅高,数据安全也有保障。
上面所提到的各个配置参数,设及到数值的,不妨自己 多试着调小,调大参数,然后重启下nginx或者php-fpm进程,看看效果怎么样。
下面介绍一个比较好的压力测试工具,siege.
debian和ubuntu用户可以通过apt-get install siege来安装siege.
siege是一个跟ab.exe相似的http压力测试软件。
我们可以用siege来测试我们的网站和服务器性能。
siege -r 100 -c 10
-r 是 repeat , -r 100是重复100次测试
-c 10是表示模拟10个用户同时并发连接
最后面是要测试的URL地址。
测试过程中可以随时按CTRL+C中止进程,siege会生成一个报告给我们。
我们可以同时根据siege的测试结果和监视服务器的负载情况,对系统压力状况进行一个深入了解和分析。接下来可以帮助我们判断该如何进行下一步操作,是继续优化配置,还是升级硬件。非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
7、怎么使用netty写一个http长连接服务器
我又看了下play的源代码,play自定义handler里的messageRecived:public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)throws Exception{Invoker.invoke(new NettyInvokation(request, response, ctx, nettyRequest, e));}messageReceived结束后,worker线程就即将(还要去做一些系统预定的收尾工作)脱离这个request,也就是说,这个request不再会占用worker了。但是Invoker.invoke这个方法会在play框架内部的线程池里提交一个任务来继续处理request,完成真正的业务逻辑。上面是play的做法,简单总结一下就是可以通过在messageReceived中启动一个新的线程或者向线程池提交任务的方式来完成request的业务逻辑处理部分,这样不但可以保持长连接不关闭,而且不会占用netty的worker进程。当处理业务逻辑完成后,再通过回调函数,把结果用netty提供的HttpResponse返回到客户端请求-netty master-netty worker-(这时worker已经可以去处理其他的请求了)自己启动一个新的线程-netty response我没测试,等有时间再看看吧
8、netty和spring mvc+tomcat分别实现http 服务器个有什么优势
可以参考各种使用了netty的开源产品,如bbo hadoop。所以能实现更少的资源占用(CPU, Memory)和单个业务服务器更高的并发。
9、netty 怎么创建http服务器
小鸟云服务器niaoyun实例创建好之后,您可以使用以下任意一种方式登录服务器:回
远程桌面连答接(,MSTSC):采用这种方式登录,请确保实例能访问公网。如果在创建实例时没有购买带宽,则不能使用远程桌面连接。
管理终端VNC:无论您在创建实例时是否购买了带宽,只要您本地有网页浏览器,都可以通过管理控制台的管理终端登录实例。
使用远程桌面连接(MSTSC)登录实例
打开开始菜单>远程桌面连接,或在开始菜单>搜索中输入mstsc。也可以使用快捷键Win+R来启动运行窗口,输入mstsc后回车启动远程桌面连接。
在远程桌面连接对话框中,输入实例的公网IP地址。单击显示选项。
输入用户名,如小鸟云默认为niaoyun。单击允许我保存凭据,然后单击连接。这样以后登录就不需要手动输入密码了。
10、netty和spring mvc+tomcat分别实现http 服务器个有什么优势
netty只是把实现了http协议的服务器。 tomcat不只实现了http协议还实现了 j2ee里的servlet标准。tomcat是一回个实现了servlet协议的容器,可以答运行servlet。spring mvc是是基于servlet之上的框架,核心是一个功能强大的servlet。