如何统计servlet一次访问对带宽流量的占用
2013-08-19 22:22
387 查看
如何统计servlet一次request和response所占用的实现带宽大小?
这里所指大小,是通过网络传输的实际流量,不是java对象的大小。
包括http的头、体、Cookie等所有经过网络的数据。
方法有:
1、直接读取http header中的Content-Length头,可以得到body的大小,再加上header的大小即可。
但有时,头中没有Content-Length;而Response在commit之前,也很难得到真正的大小。
2、包装request和response,在使用inputstream、outputstream时,记录下字节大小,同时也需要计算头的大小,而流中的数据也是未经过压缩的(header中可能指定压缩)
3、深入到容器,如Tomcat,它的HttpServletRequest是RequestFacade实例,其中包装了org.apache.catalina.connector.Request,而最底层是org.apache.coyote.Request类,来负责Tomcat的请求处理,其中org.apache.coyote.Request.getBytesRead()方法,可以得到实际读取的字节大小。header的大小,可以通过计算得到,也可以深入到org.apache.coyote.Request的inputBuffer中的end得到,这样可以精确计算出Request占用带宽大小。同理,也可以通过org.apache.catalina.connector.Response.getBytesWritten(boolean)得到response的体大小,头大小还是要算,但基本上能够精确得出。
但是,如果在代码中使用tomcat的类,就与容器绑定,不是很好的设计,通过反射实现,也是一种选择。
另外,求出的字节大小,真正的bandwidth还是要乘上系数的,因为数据在网络上传输要经过层层包装,添加检验信息等。
这里所指大小,是通过网络传输的实际流量,不是java对象的大小。
包括http的头、体、Cookie等所有经过网络的数据。
方法有:
1、直接读取http header中的Content-Length头,可以得到body的大小,再加上header的大小即可。
但有时,头中没有Content-Length;而Response在commit之前,也很难得到真正的大小。
2、包装request和response,在使用inputstream、outputstream时,记录下字节大小,同时也需要计算头的大小,而流中的数据也是未经过压缩的(header中可能指定压缩)
3、深入到容器,如Tomcat,它的HttpServletRequest是RequestFacade实例,其中包装了org.apache.catalina.connector.Request,而最底层是org.apache.coyote.Request类,来负责Tomcat的请求处理,其中org.apache.coyote.Request.getBytesRead()方法,可以得到实际读取的字节大小。header的大小,可以通过计算得到,也可以深入到org.apache.coyote.Request的inputBuffer中的end得到,这样可以精确计算出Request占用带宽大小。同理,也可以通过org.apache.catalina.connector.Response.getBytesWritten(boolean)得到response的体大小,头大小还是要算,但基本上能够精确得出。
但是,如果在代码中使用tomcat的类,就与容器绑定,不是很好的设计,通过反射实现,也是一种选择。
另外,求出的字节大小,真正的bandwidth还是要乘上系数的,因为数据在网络上传输要经过层层包装,添加检验信息等。
相关文章推荐
- linux下如何使用vnstat查看服务器带宽流量统计
- Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量
- \t\t如何统计JAVA网站访问次数并获得访问者IP
- SaaS服务商如何通过数加平台统计业务流量
- 【阿里云MVP月度分享】SaaS服务商如何通过数加平台统计业务流量
- servlet 定时操作,定时访问数据库,程序应该如何实现
- 如何对MOSS中的文档库中的文档进行访问统计
- 静态手机网站如何统计流量
- Nginx流量带宽请求状态统计(ngx_req_status)
- cPanel下如何设定流量统计工具
- 如何解决443端口被System进程占用,导致https访问只能带着端口号的问题
- Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量
- Servlet中如何捕获Session事件(统计在线人数)
- ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)
- nload: 监视网络流量及带宽占用
- 如何统计程序占用cpu时间?
- 如何实现 网站在线人数以及历史访问人数的统计
- SaaS服务商如何通过数加平台统计业务流量
- blog流量分析以及关于如何提高CSDN blog访问数量的初步方法