paulwong

#

几大NOSQL数据库性能比较

Apache Cassandra NoSQL Performance Benchmarks
http://planetcassandra.org/nosql-performance-benchmarks

NoSQL Benchmarking
http://www.cubrid.org/blog/dev-platform/nosql-benchmarking/


http://www.badrit.com/blog/2013/11/18/redis-vs-mongodb-performance#.VMpfW2SUfsg

How many requests per second can I get out of Redis?
http://skipperkongen.dk/2013/08/27/how-many-requests-per-second-can-i-get-out-of-redis/

redis性能测试,测试并发性能
http://my.oschina.net/pblack/blog/102394

posted @ 2015-01-30 00:16 paulwong 阅读(543) | 评论 (0)编辑 收藏

Apache自带的压力测试工具——ab初体验

     摘要:   我们知道压力测试的软件确实很多,诸如微软的WAST,惠普的LoadRunner以及等等其他的,但这些软件学习起来还是需要花费些时间,在选择上实在头痛,后来在郭欣的那本《构建高性能WEB站点》上看到了他介绍的这款Apache自带的压力测试工具ab,十分喜爱,于是今天终于有机会体验下ab对网站的压力测试。    实验之前我的apache已经安装了,操作系统:...  阅读全文

posted @ 2015-01-08 19:02 paulwong 阅读(1174) | 评论 (0)编辑 收藏

ab --- apache自带的压力测试工具 (apache benchmark )

简介
ab的全称是ApacheBench Apache 附带的一个小工具专门用于 HTTP Server benchmark testing可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
一个简单的例子
/*在这个例子的一开始,我执行了这样一个命令 ab -n 10 -c 10 http://www.google.com/这个命令的意思是启动 ab ,向 www.google.com 发送10个请求(-n 10) ,并每次发送10个请求(-c 10)——也就是说一次都发过去了。跟着下面的是 ab 输出的测试报告,红色部分是我添加的注释。*/
C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 http
://www.google.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 1997-2005 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.google.com (be patient).....done
Server Software:        GWS/2.1
Server Hostname:        www.google.com
Server Port:            80
Document Path:          /
Document Length:        230 bytes
Concurrency Level:      10
/*整个测试持续的时间*/
Time taken for tests:   3.234651 seconds
/*完成的请求数量*/
Complete requests:      10
/*失败的请求数量*/
Failed requests:        0
Write errors:           0
Non-2xx responses:      10
Keep-Alive requests:    10
/*整个场景中的网络传输量*/
Total transferred:      6020 bytes
/*整个场景中的HTML内容传输量*/
HTML transferred:       2300 bytes
/*大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值*/
Requests per second:    3.09 [#/sec] (mean)
/*大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值*/
Time per request:       3234.651 [ms] (mean)
/*每个事物的响应时间 */
Time per request:       323.465 [ms] (mean, across all concurrent requests)
/*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题*/
Transfer rate:          1.55 [Kbytes/sec] received
/*网络上消耗的时间的分解,各项数据的具体算法还不是很清楚*/
Connection Times (ms)
              min mean[+/-sd] median   max
Connect:       20 318 926.1     30    2954
Processing:    40 2160 1462.0   3034    3154
Waiting:       40 2160 1462.0   3034    3154
Total:         60 2479 1276.4   3064    3184
/*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中 50 的用户响应时间小于 3064 毫秒,60  的用户响应时间小于 3094 毫秒,最大的响应时间小于 3184 毫秒*/
Percentage of the requests served within a certain time (ms)
50%   3064
66%   3094
75%   3124
80%   3154
90%   3184
95%   3184
98%   3184
99%   3184
100%   3184 (longest request)
参数详解
ab is a tool for benchmarking your Apache Hypertext Transfer Protocol(HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.
ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能, 主要是显示你安装的Apache每秒可以处理多少个请求。
OPTIONS
-A auth-username:password
Supply BASIC Authentication credentials to the server. The user name and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the server needs it (i.e., has sent an 401 authentication needed).
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
Number of multiple requests to perform at a time. Default is one request at a time.
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
Add a Cookie: line to the request. The argument is typically in the form of a name=value pair. This field is repeatable.
对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-d Do not display the "percentage served within XX [ms] table".
(legacy support).
不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-e csv-file
Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time (in milliseconds) it took to serve that percentage of the requests. This is usually more useful than the 'gnuplot' file; as the results are already 'binned'.
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以毫秒为单位)时间。 由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-g gnuplot-file
Write all measured values out as a 'gnuplot' or TSV (Tab separate values) file. This file can easily be imported into packages like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.
把所有测试结果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-h Display usage information.
显示使用方法。
-H custom-header
Append extra headers to the request. The argument is typically in the form of a valid header line, containing a colon-separated field-value pair (i.e., "Accept-Encoding: zip/zop;8bit").
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit").
-i Do HEAD requests instead of GET.
执行HEAD请求,而不是GET。
-k Enable the HTTP KeepAlive feature, i.e., perform multiple
requests within one HTTP session. Default is no KeepAlive.
启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认是不启用KeepAlive功能.
-n requests
Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative enchmarking results.
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。
-p POST-file
File containing data to POST.
包含了需要POST的数据的文件.
-P proxy-auth-username:password
Supply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single : and sent on the wire base64 encoded. The string is sent regardless of whether the proxy needs it (i.e., has sent an 407 proxy authentication needed).
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q When processing more than 150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so. The -q flag will suppress these messages.
如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记可以抑制这些信息。
-s When compiled in (ab -h will show you) use the SSL protected https rather than the http protocol. This feature is experimental and very rudimentary. You probably do not want to use it.
用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S Do not display the median and standard deviation values, nor display the warning/error messages when the average and median are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).
不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持).
-t timelimit
Maximum number of seconds to spend for benchmarking. This implies a -n 50000 internally. Use this to benchmark the server within a fixed total amount of time. Per default there is no timelimit.
测试所进行的最大秒数。其内部隐含值是-n 50000。 它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T content-type
Content-type header to use for POST data.
POST数据所使用的Content-type头信息。
-v verbosity
Set verbosity level - 4 and above prints information on headers, 3 and above prints response codes (404, 200, etc.), 2 and above prints warnings and info.
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-V Display version number and exit.
显示版本号并退出。
-w Print out results in HTML tables. Default table is two columns wide, with a white background.
以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
String to use as attributes for <table>. Attributes are inserted <table here >.
设置<table>属性的字符串。 此属性被填入<table这里>.
-X proxy[:port]
Use a proxy server for the requests.
对请求使用代理服务器。
-y <tr>-attributes
String to use as attributes for <tr>.
设置<tr>属性的字符串.
-z <td>-attributes
String to use as attributes for <td>.
设置<td>属性的字符串.
BUGS
There are various statically declared buffers of fixed length. Combined with the lazy parsing of the command line arguments, the response headers from the server and other external inputs, this might bite you. It does not implement HTTP/1.x fully; only accepts some 'expected' forms of responses. The rather heavy use of strstr(3) shows up top in profile, which might indicate a performance problem; i.e., you would measure the ab performance rather than the server's.
程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现HTTP/1.x; 仅接受某些'预想'的响应格式。strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。

posted @ 2015-01-08 18:38 paulwong 阅读(2038) | 评论 (0)编辑 收藏

修改LINUX能打开的文件的最大数


2、 修改目标
我们的目标是:让每一个用户登录系统后系统打开的最大文件数都是我们设定好的。
但我这里不得不说的是:非常遗憾,网上很多这方面关于ulimit设置修改资源限制的文章,但没一篇文章管用。
把这个目标分解为两个目标:

2.1、设置对root用户登录系统生效
这个目标可以实现起来不难

2.2、设置对所有用户生效
这个就非常麻烦了,弄不好还会把你的系统给整坏,因为要重编译Linux的内核才行!
所以权衡之下,我只实现了第一个目标,因为第二个目标的风险太大,我想如果我之前知道这点,那么我在装系统的时候我会先做这个处理,但现在我觉得已经晚了。

3、 修改的地方

3.1、修改/etc/security/limits.conf
通过 vi /etc/security/limits.conf修改其内容,在文件最后加入(数值也可以自己定义):
* soft nofile = 65536
* hard nofile = 65536
root soft nofile 65536
root hard nofile 65536
* 表示该配置对所有用户均有效,root用户要特别加两行。

3.2、修改/etc/profile
通过vi /etc/profile修改,在最后加入以下内容
ulimit -n 65536
然后重新登录即可生效了。

说明:
其实只修改/etc/profile就可以生效了,但我还是建议把/etc/security/limits.conf也修改一下。
最后强调的是,你如果要使得修改对所有用户都生效,那么现在看来你只能重新编译Linux的内核才行。

3.3 修改/etc/pam.d/login添加如下一行
session required /lib/security/pam_limits.so

posted @ 2015-01-07 11:36 paulwong 阅读(545) | 评论 (0)编辑 收藏

开源中国 2014 最受关注开源软件排行榜 TOP 50

开源中国 2014 年最受关注软件排行榜 TOP 50 正式出炉!2014 年结束了,我们来了解一下过去一年里开源中国最受欢迎的 50 款软件。此榜单是根据过去一年的用户访问、交流分享和项目本身的更新频度等诸多角度对收录于开源中国 33000+ 款开源软件进行统计,从而得出前 50 名最受欢迎的开源软件,仅供参考。

本排行榜主要是针对开源中国社区在 2014 年度最受欢迎的 50 款热门开源项目根据用户访问量、讨论和关注等角度进行筛选,从而得出前 50 名开源软件列表:

1. JFinal

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!

授权协议:Apache
源码下载:http://git.oschina.net/jfinal/jfinal

2. AngularJS

Angular JS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作。 AngularJS很小,只有60K,兼容主流浏览器,与 jQuery 配合良好。

授权协议:MIT
源码下载:https://github.com/angular/angular.js

3.  Bootstrap

Bootstrap是快速开发Web应用程序的前端工具包。它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等。

授权协议:MIT
源码下载:https://github.com/twbs/bootstrap

4.  Dubbo

Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。

授权协议:Apache
源码下载:https://github.com/alibaba/dubbo

5.  Hadoop

Hadoop 是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

授权协议:Apache
源码下载:http://mirror.bit.edu.cn/apache/

6.  jQuery Mobile

jQuery Mobile(jQueryMobile) 是 jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。

授权协议:MIT/GPL
源码下载:https://github.com/jquery/jquery-mobile

7.  Nginx

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。

授权协议:BSD
源码下载:http://nginx.org/en/download.html

8.  Qt

Qt 是一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。

授权协议:GPL/LGPL/QPL
源码下载:http://www.qt.io/download-open-source/

9.  禅道

禅道是第一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划 管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆 盖了项目管理的核心流程。

授权协议:LGPL
源码下载:http://git.oschina.net/wwccss/zentaopms

10.  Redmine

Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。

授权协议:GPL
源码下载:https://github.com/redmine/redmine

11.  CKEditor

CKEditor 是新一代的 FCKeditor,是一个重新开发的版本。CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站。

授权协议:GPL/LGPL/MPL
源码下载:http://ckeditor.com/download

12.  TeamTalk

TeamTalk 是由蘑菇街开发的开源即时通讯解决方案,适用于中小型企业,提供可靠的消息传递机制;支持文字、图片、语音等富文本信息;文件收发等。

授权协议:Apache
源码下载:https://github.com/mogutt

13.  Afinal

Afinal 是一个 Android 的 Sqlite ORM 和 IOC 框架。同时封装了Android 中的 HTTP 框架,使其更加简单易用。Afinal 的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。

授权协议:Apache
源码下载:http://git.oschina.net/fuhai/afinal

14.  ECharts

ECharts 开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特 性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。

授权协议:BSD
源码下载:https://github.com/ecomfe/echarts

15.  Semantic UI

Semantic UI — 完全语义化的前端界面开发框架,跟  Bootstrap 和  Foundation 比起来,还是有些不同的,在功能特性上、布局设计上、用户体验上均存在很多差异。

授权协议:MIT
源码下载:https://github.com/Semantic-Org/Semantic-UI

16.  SWFUpload

SWFUpload 是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统 <input type="file"/> 标签的文件上传模式。

授权协议:MIT
源码下载:https://github.com/WordPress/secure-swfupload

17.  GoAgent

GoAgent 是一个使用Python和Google Appengine SDK编写的代理软件,goagent的初衷是弥补gappproxy的不足。

授权协议:GPL
源码下载:http://git.oschina.net/goagent/goagent

18.  Android Studio

Android Studio 是一个全新的 Android 开发环境,基于 IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。

授权协议:Apache
源码下载:http://developer.android.com/sdk/index.html

19.  Druid

Druid 是一个JDBC组件,它包括三部分:DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系;DruidDataSource 高效可管理的数据库连接池;SQLParser。

授权协议:Apache
源码下载:http://git.oschina.net/wenshao/druid

20.  Nagios

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。

授权协议:GPL
源码下载:http://www.nagios.org/download/

21.  Amaze UI

Amaze UI 是中国首个开源 HTML5 跨屏前端框架。Amaze UI 是一个轻量级、Mobile first的前端框架, 基于开源社区流行前端框架编写。

授权协议:MIT
源码下载:http://git.oschina.net/amazeui/amazeui

22.  Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

授权协议:Apache
源码下载:https://github.com/docker/docker

23.  fastjson

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

授权协议:Apache
源码下载:http://git.oschina.net/wenshao/fastjson

24. CrossApp

CrossApp是一款完全开源、免费、跨平台的移动应用开发引擎 。CrossApp 采用 C++ 开发(即将支持 JS 和 Lua 编写),可直接导出 iOS 和 Android 原生应用,拥有高性能,多控件,开发速度快的优势。

授权协议:MIT
源码下载:http://git.oschina.net/9miao/CrossApp

25. Sonar

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。

授权协议:LGPL
源码下载:https://github.com/SonarSource/sonarqube

26. xUtils

xUtils 最初源于  Afinal 框架,进行了大量重构,使得 xUtils 支持大文件上传,更全面的 http 请求协议支持(10 种谓词),拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响...

授权协议:Apache
源码下载:https://github.com/wyouflf/xUtils

27. TeamLab

TeamLab 是一个免费开源的商业协作和项目管理的平台。TeamLab 主要功能包括:项目管理、里程碑管理、任务、报表、事件、博客、论坛、书签、Wiki、即时消息等等。

授权协议:AGPL
源码下载:http://sourceforge.net/projects/teamlab/files/

28. memcached

memcached 是 一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但目前被许多软件(如MediaWiki)所使用。memcached具有多种语言的客户端 开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/。

授权协议:BSD
源码下载:https://code.google.com/p/memcached/downloads/list

29. Magnolia

Magnolia CMS 是一家瑞士公司自 2003 年起发布的一个基于 Java 的开源内容管理系统。它适合且已被使用在以下领域:电子商务、银行、媒体娱乐政府、旅游、航空航天、工业制造、教育和保险

授权协议:GPL
源码下载:http://git.magnolia-cms.com/gitweb/

30. Django

Django 项目是一个定制 Python WEB 框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

授权协议:BSD
源码下载:https://www.djangoproject.com/download/

31. zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。

授权协议:GPL
源码下载:http://www.zabbix.com/download.php

32. Kettle

Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定(数据迁移工具)。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

授权协议:LGPL
源码下载:http://sourceforge.net/projects/pentaho/files/Data%20Integration/

33. Node.js

Node.js 是一套用来编写高性能网络服务器的 JavaScript 工具包,一系列的变化由此开始。比较独特的是,Node.js 会假设你是在 POSIX 环境下运行它 Linux 或 Mac OS X。

授权协议:MIT
源码下载:http://nodejs.org/download/

34. MyBatis

MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。在线Javadoc:http://tool.oschina.net/apidocs/apidoc?api=mybatis-3.1.1

授权协议:Apache
源码下载:https://github.com/mybatis/mybatis-3

35. TortoiseGit

TortoiseGit (海龟Git)是TortoiseSVNGit版本,tortoisegit用于迁移TortoiseSVN到TortoiseGit,一直以来Git在Windows平台没有好用GUI客户端,现在tortoisegit的出现给Windows开发者带来福音。

授权协议:GPL
源码下载:https://code.google.com/p/tortoisegit/

36. Openfire

Openfire 是实时的基于WEB的即时消息传输平台,是原来的Jive Messenger。

授权协议:Apache
源码下载:http://www.igniterealtime.org/downloads/index.jsp

37. ZUI

zui 是禅道项目管理软件团队在完善自己产品过程中形成的一个开源前端实践方案,帮助你快速构现代跨屏应用。简单美观,易于使用,快速构建简洁大方的现代web应用。

授权协议:MIT
源码下载:http://git.oschina.net/wwccss/zui

38. Cocos2d-x

Cocos2D-X 是全球知名的开源跨平台游戏引擎,易学易用,目前已经支持iOS、Android、Windows桌面、Mac OSX、Linux、BlackBerry、Windows Phone等平台。Cocos2d-JS统一了使用JS进行开发的开发体验,将HTML5引擎与JSB的API高度统一起来

授权协议:MIT
源码下载:http://www.cocos2d-x.org/download?project_id=cocos2d-x

39. D3.js

D3 是最流行的可视化库之一,它被很多其他的表格插件所使用。它允许绑定任意数据到DOM,然后将数据驱动转换应用到Document中。你可以使用它用一个数组创建基本的HTML表格,或是利用它的流体过度和交互,用相似的数据创建惊人的SVG条形图。

授权协议:MIT
源码下载:https://github.com/mbostock/d3

40. Twitter Storm

Twitter Storm 是一个分布式的、容错的实时计算系统。Storm 为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。

授权协议:EPL
源码下载:https://github.com/nathanmarz/storm

41. Redis

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

授权协议:BSD
源码下载:https://github.com/antirez/redis

42. Nutch

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

授权协议:Apache
源码下载:http://www.apache.org/dyn/closer.cgi/nutch/

43. PhoneGap

PhoneGap 是一款 HTML5 平台,通过它,开发商可以使用 HTML、CSS 及 JavaScript 来开发本地移动应用程序。因此,目前开发商可以只编写一次应用程序,然后在 7 个主要的移动平台和应用程序商店 (App Store) 里进行发布。

授权协议:Apache
源码下载:https://github.com/phonegap/phonegap

44. Mono

Mono 是一个由 Novell 公司主持的项目。该项目的目标是创建一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET 工具,包括C# 编译器和共通语言执行平台。与微软的.NET Framework 不同,Mono 项目不仅可以运行于Windows 系统上,还可以运行于Linux,FreeBSD,Unix,Mac OS X 和Solaris。

授权协议:GPL/LGPL/MIT
源码下载:http://www.mono-project.com/

45. Seafile

Seafile 是新一代的开源云存储软件。它提供更丰富的文件同步和管理功能,以及更好的数据隐私保护和群组协作功能。Seafile 支持 Mac、Linux、Windows 三个桌面平台,支持 Android 和 iOS 两个移动平台。

授权协议:GPL
源码下载:http://git.oschina.net/lins05/seafile

46. ElasticSearch

Elastic Search 是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。

授权协议:Apache
源码下载:https://github.com/elasticsearch/elasticsearch

47. Tor

Tor 是一个帮助你抵御流量分析的软件项目, 流量分析是一种对网络的监视行为。Tor 将你的通信通过一个由遍及全球的志愿者运行的中继(relay)所组成的分布式网络转发, 以此来保护你的安全:它令监视你的 Internet 连接的那些人无法知道你所访问的站点, 它还令你所访问的站点无法知道你的物理位置。

授权协议:BSD
源码下载:https://www.torproject.org/

48. Cacti

Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。

授权协议:GPL
源码下载:http://www.cacti.net/

49. GitLab

GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。

授权协议:MIT
源码下载:https://github.com/gitlabhq/gitlabhq

50. Notepad++

Notepad++ 是一款非常有特色的编辑器,是开源软件,可以免费使用。支持的语言: C, C++ , Java , C#, XML, HTML, PHP, Javascript!

授权协议:GPL
源码下载:http://notepad-plus-plus.org/

posted @ 2015-01-07 00:08 paulwong 阅读(675) | 评论 (0)编辑 收藏

Mongodb 查询性能的事情

上一篇:Mongodb VS Mysql 查询性能,测试了 mongodb 与 mysql 的查询性能。结果说明 mongodb 性能可以, 可以代替 mysql 来使用。

但是这个测试都是在百万级别,我的场景在 KW 级别。所以还要对 mongodb 在 kw 级别下测试效果。

我测试环境是 4G 内存(有好些内存被其它程序占用),2kw 数据,查询随机生成 id(一次查询 20 个id)。

在这样的环境中测试不理想,比较失望。平均一次查询 500ms(比 mysql 还差,特别是在并发查询下,性能较差。很底的吞吐量)。查看其索引大小(用 db.mycoll.stats() 可以查询):2kw 数据中有 1.1G 左右的索引,存储的数据在 11G 左右。

测试过程中发现 iowait 占 50% 左右,看来还是 io 的瓶颈。还看到 mongodb 使用的内存不多(小于索引的大小,看来这机器不足够来测试)。

换了个有可用 6G 内存的机器。在 50 个并发下,可以达到平均 100 ms 左右,算比较满意,但是并发好像能力不够强。但这个性能不能由我控制,还由机器的可用内存控制。原因就是 mongodb 没有指定可占用的内存大小,它把所有空闲内存当缓存使用,既是优点也是缺点:优点--可以最大限度提升性能;缺点--容易受其它程序干扰(占用了它的缓存)。由我测试来看,它抢占内存的能力不强。mongodb 是用内存映射文件 vmm,官方的说明:

Memory Mapped Storage Engine

This is the current storage engine for MongoDB, and it uses memory-mapped files for all disk I/O. Using this strategy, the operating system's virtual memory manager is in charge of caching. This has several implications:

There is no redundancy between file system cache and database cache: they are one and the same.
MongoDB can use all free memory on the server for cache space automatically without any configuration of a cache size.
Virtual memory size and resident size will appear to be very large for the mongod process. This is benign: virtual memory space will be just larger than the size of the datafiles open and mapped; resident size will vary depending on the amount of memory not used by other processes on the machine.
Caching behavior (such as LRU'ing out of pages, and laziness of page writes) is controlled by the operating system: quality of the VMM implementation will vary by OS.
所以这么来看,我觉得 mongodb 没有指定内存大小来保证正常的缓存是个缺点。应该至少保证索引全部能放到内存中。但这个行为不是由启动程序决定,而是由环境决定(美中不足)。

官方也有段内容说到索引放到内存中:

If your queries seem sluggish, you should verify that your indexes are small enough to fit in RAM. For instance, if you're running on 4GB RAM and you have 3GB of indexes, then your indexes probably aren't fitting in RAM. You may need to add RAM and/or verify that all the indexes you've created are actually being used.

还是希望 mongodb 中可以指定内存大小,确保它有足够内存加载索引。

小结:大数据量下(kw级)mongodb 并发查询不够理想(100-200/s)。写数据很快(我的环境,远程提交近 1w/s,估计达到 1.5W/s 是没问题的,基本不受大数据量的影响)。

贴个测试数据:

1 id(内存使用 <1.5g) 10 id(内存使用 2-3g) 20 id(内存使用 >4g)
1 2 3 1 2 3 1 2 3
total time 17.136 25.508 17.387 37.138 33.788 25.143 44.75 31.167 30.678
1 thread thruput 583.5668 392.0339 575.1423 269.266 295.9631 397.725 223.4637 320.8522 325.9665
total time 24.405 22.664 24.115 41.454 41.889 39.749 56.138 53.713 54.666
5 thread thruput 2048.76 2206.142 2073.398 1206.156 1193.631 1257.893 890.6623 930.8733 914.6453
total time 27.567 26.867 28.349 55.672 54.347 50.93 72.978 81.857 75.925
10 thread thruput 3627.526 3722.038 3527.461 1796.235 1840.028 1963.479 1370.276 1221.643 1317.089
total time 51.397 57.446 53.81 119.386 118.015 76.405 188.962 188.034 138.839
20 thread thruput 3891.278 3481.53 3716.781 1675.238 1694.7 2617.63 1058.414 1063.637 1440.517
total time 160.038 160.808 160.346 343.559 352.732 460.678 610.907 609.986 1411.306
50 thread thruput 3124.258 3109.298 3118.257 1455.354 1417.507 1085.357 818.4552 819.6909 354.2818
total time 2165.408 635.887 592.958 1090.264 1034.057 1060.266 1432.296 1466.971 1475.061
100 thread thruput 461.8067 1572.606 1686.46 917.209 967.0647 943.1595 698.1797 681.6767 677.9381
上面的测试分别用三种查询(每次 1,10,20 id),在不同并发下测试3次,每次发出 1w 次查询。第一行数据为所有线程累加时间(单位 ms),第二行数据为吞吐量(1w /(total time / thread num))。测试中内存使用慢慢增加,所以后面的数据可能比较高效的(高效的环境)。

从上表看,10 - 20线程比较高的吞吐量。看到内存使用,前提就是索引加载到内存中,并有些内存作为缓存。

下面有个索引查询优化的 pdf。

Indexing and Query Optimizer

Indexing and Query Optimizer (Aaron Staple)
ps:

默认 mongodb 服务器只有10个并发,如果要提高它的连接数,可以用 --maxConns num 来提高它的接收并发的数据。

mongodb 的 java 驱动默认最多只有 10 并发连接池。要提高它,可以在 mongo.jar 的环境中加入 MONGO.POOLSIZE 系统参数,如 java -DMONGO.POOLSIZE=50 ...

posted @ 2015-01-06 23:39 paulwong 阅读(710) | 评论 (0)编辑 收藏

关于MongoDB最大连接数的查看与修改

在Linux平台下,无论是64位或者32位的MongoDB默认最大连接数都是819,WIN平台不知道,估计也没有人在 WIN平台下使用MongoDB做生产环境

[root@DELL113 mongodb-linux-i686-2.4.1]# mongo admin -u root -p password
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/admin
> db.serverStatus().connections
{ "current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }

途中available显示818少了一个,表示空闲的。current表示已经占用了的连接数,两数一加就等于819,如果我现在在连接一个,那么available就是817,current就是2

[root@DELL113 mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
"current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }
> db.serverStatus().connections
"current" : 2, "available" : 817, "totalCreated" : NumberLong(2) }

819个连接数对于一般的站点我认为已经够用,并且都是现连现取现断。但这个连接数也可以修改,只要在启动的时候加入--maxConns即可
服务器启动

[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:06:21.905 [initandlisten] MongoDB starting : pid=2812 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:06:21.957 [initandlisten] db version v2.4.1
Wed Apr 3 11:06:21.957 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:06:21.957 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:06:21.957 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:06:21.957 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:06:21.982 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:06:21.982 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:06:22.297 [initandlisten] preallocateIsFaster=true 2.62
Wed Apr 3 11:06:22.717 [initandlisten] --maxConns too high, can only handle 819
Wed Apr 3 11:06:22.724 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:06:22.725 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:06:25.126 [initandlisten] connection accepted from 192.168.4.86:53917 #1 (1 connection now open)

查询最大连接数

[root@DELL113 mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
"current" : 1, "available" : 818, "totalCreated" : NumberLong(1) }

发现还是819?其实是Linux默认进程能打开最大文件数有关,可以通过ulimit 解决

[root@lee mongodb-linux-x86_64-2.4.1]# ulimit -n 2500
[root@lee mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000
Wed Apr 3 11:11:07.013 [initandlisten] MongoDB starting : pid=2930 port=27017 dbpath=/root/db 64-bit host=lee
Wed Apr 3 11:11:07.013 [initandlisten] db version v2.4.1
Wed Apr 3 11:11:07.013 [initandlisten] git version: 1560959e9ce11a693be8b4d0d160d633eee75110
Wed Apr 3 11:11:07.013 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Apr 3 11:11:07.013 [initandlisten] allocator: tcmalloc
Wed Apr 3 11:11:07.013 [initandlisten] options: { dbpath: "/root/db", maxConns: 2000 }
Wed Apr 3 11:11:07.031 [initandlisten] journal dir=/root/db/journal
Wed Apr 3 11:11:07.031 [initandlisten] recover : no journal files present, no recovery needed
Wed Apr 3 11:11:07.170 [initandlisten] waiting for connections on port 27017
Wed Apr 3 11:11:07.171 [websvr] admin web console waiting for connections on port 28017
Wed Apr 3 11:11:10.076 [initandlisten] connection accepted from 192.168.4.86:53161 #1 (1 connection now open)

再查看最大连接数,搞定

[root@DELL113 mongodb-linux-i686-2.4.1]# ./bin/mongo 192.168.6.42
MongoDB shell version: 2.4.1
connecting to: 192.168.6.42/test
> db.serverStatus().connections
"current" : 1, "available" : 1999, "totalCreated" : NumberLong(1) }

关于ulimit的更多知识大家可以去网上检索检索

客户端程序通常是通过DRIVER来链接,由于每次建立链接的成本都挺高,因此都用链接池来实现,SPRING DATA MONGODB中是如下配置
mongo.dbname=cms
#线程池的大小
mongo.connectionsPerHost=100
#这个*mongo.connectionsPerHost则是如果链接数大于100的等待xttk数
mongo.threadsAllowedToBlockForConnectionMultiplier=4
#等待线程的等待时间
mongo.maxWaitTime=1500
mongo.socketTimeout=1500
mongo.connectTimeout=1000
mongo.autoConnectRetry=true
mongo.socketKeepAlive=true
mongo.slaveOk=true


  • autoConnectRetry simply means the driver will automatically attempt to reconnect to the server(s) after unexpected disconnects. In production environments you usually want this set to true.

  • connectionsPerHost are the amount of physical connections a single Mongo instance (it's singleton so you usually have one per application) can establish to a mongod/mongos process. At time of writing the java driver will establish this amount of connections eventually even if the actual query throughput is low (in order words you will see the "conn" statistic in mongostat rise until it hits this number per app server).

    There is no need to set this higher than 100 in most cases but this setting is one of those "test it and see" things. Do note that you will have to make sure you set this low enough so that the total amount of connections to your server do not exceed

    db.serverStatus().connections.available

    In production we currently have this at 40.

  • connectTimeout. As the name suggest number of milliseconds the driver will wait before a connection attempt is aborted. Set timeout to something long (15-30 seconds) unless there's a realistic, expected chance this will be in the way of otherwise succesful connection attempts. Normally if a connection attempt takes longer than a couple of seconds your network infrastructure isn't capable of high throughput.

  • maxWaitTime. Number of ms a thread will wait for a connection to become available on the connection pool, and raises an exception if this does not happen in time. Keep default.

  • socketTimeout. Standard socket timeout value. Set to 60 seconds (60000).

  • threadsAllowedToBlockForConnectionMultiplier. Multiplier for connectionsPerHost that denotes the number of threads that are allowed to wait for connections to become available if the pool is currently exhausted. This is the setting that will cause the "com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db connection" exception. It will throw this exception once this thread queue exceeds the threadsAllowedToBlockForConnectionMultiplier value. For example, if the connectionsPerHost is 10 and this value is 5 up to 50 threads can block before the aforementioned exception is thrown.

    If you expect big peaks in throughput that could cause large queues temporarily increase this value. We have it at 1500 at the moment for exactly that reason. If your query load consistently outpaces the server you should just improve your hardware/scaling situation accordingly.

  • readPreference(UPDATED, 2.8+) Used to determine the default read preference and replaces "slaveOk". Set up a ReadPreference through one of the class factory method. A full description of the most common settings can be found at the end of this post

  • w(UPDATED, 2.6+) This value determines the "safety" of the write. When this value is -1 the write will not report any errors regardless of network or database errors. WriteConcern.NONE is the appropriate predefined WriteConcern for this. If w is 0 then network errors will make the write fail but mongo errors will not. This is typically referred to as "fire and forget" writes and should be used when performance is more important than consistency and durability. Use WriteConcern.NORMAL for this mode.

    If you set w to 1 or higher the write is considered safe. Safe writes perform the write and follow it up by a request to the server to make sure the write succeeded or retrieve an error value if it did not (in other words, it sends a getLastError() command after you write). Note that until this getLastError() command is completed the connection is reserved. As a result of that and the additional command the throughput will be signficantly lower than writes with w <= 0. With a w value of exactly 1 MongoDB guarantees the write succeeded (or verifiably failed) on the instance you sent the write to.

    In the case of replica sets you can use higher values for w whcih tell MongoDB to send the write to at least "w" members of the replica set before returning (or more accurately, wait for the replication of your write to "w" members). You can also set w to the string "majority" which tells MongoDB to perform the write to the majority of replica set members (WriteConcern.MAJORITY). Typicall you should set this to 1 unless you need raw performance (-1 or 0) or replicated writes (>1). Values higher than 1 have a considerable impact on write throughput.

  • fsync. Durability option that forces mongo to flush to disk after each write when enabled. I've never had any durability issues related to a write backlog so we have this on false (the default) in production.

  • j *(NEW 2.7+)*. Boolean that when set to true forces MongoDB to wait for a successful journaling group commit before returning. If you have journaling enabled you can enable this for additional durability. Refer to http://www.mongodb.org/display/DOCS/Journaling to see what journaling gets you (and thus why you might want to enable this flag).

ReadPreference The ReadPreference class allows you to configure to what mongod instances queries are routed if you are working with replica sets. The following options are available :

  • ReadPreference.primary() : All reads go to the repset primary member only. Use this if you require all queries to return consistent (the most recently written) data. This is the default.

  • ReadPreference.primaryPreferred() : All reads go to the repset primary member if possible but may query secondary members if the primary node is not available. As such if the primary becomes unavailable reads become eventually consistent, but only if the primary is unavailable.

  • ReadPreference.secondary() : All reads go to secondary repset members and the primary member is used for writes only. Use this only if you can live with eventually consistent reads. Additional repset members can be used to scale up read performance although there are limits to the amount of (voting) members a repset can have.

  • ReadPreference.secondaryPreferred() : All reads go to secondary repset members if any of them are available. The primary member is used exclusively for writes unless all secondary members become unavailable. Other than the fallback to the primary member for reads this is the same as ReadPreference.secondary().

  • ReadPreference.nearest() : Reads go to the nearest repset member available to the database client. Use only if eventually consistent reads are acceptable. The nearest member is the member with the lowest latency between the client and the various repset members. Since busy members will eventually have higher latencies this should also automatically balance read load although in my experience secondary(Preferred) seems to do so better if member latencies are relatively consistent.

Note : All of the above have tag enabled versions of the same method which return TaggableReadPreference instances instead. A full description of replica set tags can be found here :Replica Set Tags



参考网址:
http://api.mongodb.org/java/2.10.1/com/mongodb/MongoClientOptions.Builder.html#connectionsPerHost(int)
https://github.com/spring-projects/spring-data-mongodb/blob/master/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.5.xsd

posted @ 2015-01-06 22:10 paulwong 阅读(5382) | 评论 (0)编辑 收藏

TOMCAT调优

  1. 安装AB
    rpm -ivh http://repo.webtatic.com/yum/centos/5/`uname -i`/webtatic-release-5-0.noarch.rpm
    yum install httpd-tools

  2. 使用AB
    ab -r -n 100000 -c 10000 http://10.120.151.223:8080/
    需加-r,则在收到SOCKET错误的时候不会退出
    这段的意思是发送100000个请求,其中并发是10000个

  3. 修改LINUX能打开的文件的最大数
    2、  修改目标
    我们的目标是:让每一个用户登录系统后系统打开的最大文件数都是我们设定好的。
    但我这里不得不说的是:非常遗憾,网上很多这方面关于ulimit设置修改资源限制的文章,但没一篇文章管用。
    把这个目标分解为两个目标:

    2.1、设置对root用户登录系统生效
    这个目标可以实现起来不难

    2.2、设置对所有用户生效
    这个就非常麻烦了,弄不好还会把你的系统给整坏,因为要重编译Linux的内核才行!
    所以权衡之下,我只实现了第一个目标,因为第二个目标的风险太大,我想如果我之前知道这点,那么我在装系统的时候我会先做这个处理,但现在我觉得已经晚了。

    3、  修改的地方

    3.1、修改/etc/security/limits.conf
    通过 vi /etc/security/limits.conf修改其内容,在文件最后加入(数值也可以自己定义):
    * soft  nofile = 65536
    * hard  nofile = 65536
    root soft nofile 65536
    root hard nofile 65536
    * 表示该配置对所有用户均有效,root用户要特别加两行。

    3.2、修改/etc/profile
    通过vi /etc/profile修改,在最后加入以下内容
    ulimit -n 65536
    然后重新登录即可生效了。
    说明:
    其实只修改/etc/profile就可以生效了,但我还是建议把/etc/security/limits.conf也修改一下。
    最后强调的是,你如果要使得修改对所有用户都生效,那么现在看来你只能重新编译Linux的内核才行。


  4. 安装APR,参考:http://jmchung.github.io/blog/2013/09/06/centos-installing-apache-portable-runtime-apr-for-tomcat/
    $ wget http://apache.fayea.com//apr/apr-1.5.1.tar.gz
    $ cd /path/to/tomcat/bin
    $ tar zxvf tomcat-native.tar.gz
    $ cd tomcat-native-x.y.z-src/jni/native
    $ ./configure --with-apr=/usr/local/apr --with-ssl=/usr/lib64/openssl
    $ make install

  5. 修改server.xml
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
            URIEncoding
    ="UTF-8"  
                  enableLookups
    ="false" 
                  tcpNoDelay
    ="true"
            compression
    ="on" compressionMinSize="2048"
            maxThreads
    ="20000" connectionTimeout="-1"
            compressableMimeType
    ="application/json,text/html,text/xml,text/javascript,text/css,text/plain" redirectPort="8443"/>


  6. https的也要修改:
    <Connector SSLEnabled="true" clientAuth="false"
            port
    ="8443" keystoreFile="/root/java/keystore/server.jks" keystorePass="123456"
            protocol
    ="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
            secure
    ="true" sslProtocol="TLS" 
        URIEncoding
    ="UTF-8"  minSpareThreads="25" maxSpareThreads="75"
               enableLookups
    ="false" disableUploadTimeout="true" connectionTimeout="20000"
        acceptCount
    ="1000"  maxThreads="1000" maxProcessors="1000" minProcessors="5"
        useURIValidationHack
    ="false" tcpNoDelay="true"
        compression
    ="on" compressionMinSize="2048"
        compressableMimeType
    ="application/json,text/html,text/xml,text/javascript,text/css,text/plain" />

  7. JVM启动参数
    JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC  -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m  -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "

参考网址:
http://www.cnblogs.com/baibaluo/archive/2011/08/23/2150305.html
http://ifeve.com/tomcat-connector-tuning-2/
http://sndapk.blog.51cto.com/5385144/1306278

posted @ 2015-01-06 17:40 paulwong 阅读(502) | 评论 (0)编辑 收藏

TomEE资源

Getting started with Apache TomEE
http://jaxenter.com/getting-started-with-apache-tomee-105824.html



posted @ 2015-01-05 00:10 paulwong 阅读(336) | 评论 (0)编辑 收藏

Architecture for Redis cache & Mongo for persistence

Caching with Spring Data Redis
http://www.javacodegeeks.com/2013/02/caching-with-spring-data-redis.html

Architecture for Redis cache & Mongo for persistence
http://stackoverflow.com/questions/11218941/architecture-for-redis-cache-mongo-for-persistence

MongoDB with redis
http://stackoverflow.com/questions/10696463/mongodb-with-redis/10721249#10721249

Caching Data in Spring Using Redis
http://caseyscarborough.com/blog/2014/12/18/caching-data-in-spring-using-redis/

Springside Redis
https://github.com/springside/springside4/wiki/Redis

Spring Cache注解+Redis
http://hanqunfeng.iteye.com/blog/2176172













posted @ 2015-01-04 15:50 paulwong 阅读(463) | 评论 (0)编辑 收藏

仅列出标题
共112页: First 上一页 36 37 38 39 40 41 42 43 44 下一页 Last