线程池参数
private static int MAX_CONNECTIONS = 200;
private static int MAX_CONNECTIONS_PER_ROUTE = 30;
未池化 | 池化 |
25.886 | 12.692 |
23.301 | 11.369 |
26.695 | 11.073 |
24.852 | 13.085 |
24.985 | 11.008 |
未池化 | 池化 |
1.549
seconds 1.562 seconds 1.563 seconds 1.545 seconds 1.564 seconds 1.915 seconds 2.164 seconds 2.454 seconds 6.089 seconds 8.622 seconds total 29.027 second |
0.864 seconds 0.864 seconds 0.874 seconds 0.874 seconds 0.874 seconds 0.874 seconds 0.874 seconds 1.044 seconds 1.044 seconds 1.051 seconds total 9.237 seconds |
1.414
seconds 1.427 seconds 1.427 seconds 1.429 seconds 1.639 seconds 1.639 seconds 4.542 seconds 5.646 seconds 5.891 seconds 5.891 seconds total 30.946 seconds |
0.884 seconds 0.889 seconds 0.891 seconds 0.895 seconds 0.899 seconds 0.900 seconds 0.904 seconds 0.906 seconds 1.108 seconds 1.107 seconds total 9.383 seconds |
1.308
seconds 1.315 seconds 1.326 seconds 1.335 seconds 1.335 seconds 1.336 seconds 1.347 seconds 3.119 seconds 3.413 seconds 6.485 seconds total 22.318 seconds |
0.914 seconds 0.920 seconds 0.921 seconds 0.921 seconds 0.922 seconds 0.963 seconds 0.964 seconds 0.963 seconds 0.968 seconds 0.969 seconds total 9.424 seconds |
1.382
seconds 1.395 seconds 1.395 seconds 1.395 seconds 1.395 seconds 1.396 seconds 1.464 seconds 5.568 seconds 7.335 seconds 7.335 seconds total 30.060 seconds |
0.873 seconds 0.881 seconds 0.882 seconds 0.883 seconds 0.885 seconds 0.888 seconds 0.888 seconds 0.889 seconds 0.894 seconds 1.280 seconds total 9.244 seconds |
1.669
seconds 1.679 seconds 1.680 seconds 1.685 seconds 1.686 seconds 1.749 seconds 1.750 seconds 5.865 seconds 6.112 seconds 6.113 seconds total 29.989 seconds |
0.887 seconds 0.897 seconds 0.898 seconds 0.907 seconds 0.908 seconds 0.908 seconds 0.908 seconds 0.916 seconds 0.915 seconds 0.920 seconds total 9.063 seconds |
未池化 | 池化 |
1.237
seconds 1.257 seconds 1.264 seconds 1.272 seconds 1.549 seconds 1.747 seconds 1.820 seconds 1.831 seconds 2.095 seconds 2.099 seconds 2.109 seconds 2.284 seconds 2.393 seconds 3.101 seconds 3.392 seconds 4.270 seconds 4.328 seconds 4.330 seconds 4.335 seconds 4.336 seconds 4.336 seconds 4.363 seconds 4.412 seconds 4.426 seconds 4.484 seconds 4.578 seconds 4.590 seconds 4.622 seconds 4.702 seconds 4.704 seconds 4.870 seconds 4.907 seconds 4.932 seconds 4.935 seconds 4.932 seconds 4.947 seconds 5.583 seconds 6.987 seconds 7.224 seconds 7.225 seconds 7.235 seconds 7.250 seconds 7.265 seconds 7.263 seconds 7.264 seconds 7.289 seconds 7.291 seconds 7.353 seconds 7.590 seconds 11.221 seconds total 229.829 seconds |
1.262 seconds 1.276 seconds 1.277 seconds 1.286 seconds 1.295 seconds 1.313 seconds 1.330 seconds 1.343 seconds 1.342 seconds 1.343 seconds 1.350 seconds 1.354 seconds 1.356 seconds 1.357 seconds 1.357 seconds 1.360 seconds 1.362 seconds 1.363 seconds 1.365 seconds 1.364 seconds 1.367 seconds 1.370 seconds 1.371 seconds 1.372 seconds 1.371 seconds 1.376 seconds 1.378 seconds 1.378 seconds 1.362 seconds 1.380 seconds 1.381 seconds 1.381 seconds 1.372 seconds 1.389 seconds 1.390 seconds 1.392 seconds 1.394 seconds 1.395 seconds 1.398 seconds 1.399 seconds 1.399 seconds 1.400 seconds 1.403 seconds 1.405 seconds 1.411 seconds 1.411 seconds 1.416 seconds 1.421 seconds 1.424 seconds 1.808 seconds total 68.765 seconds |
1.250
seconds 1.269 seconds 1.267 seconds 1.279 seconds 1.284 seconds 1.665 seconds 1.695 seconds 1.705 seconds 1.722 seconds 1.778 seconds 2.136 seconds 2.639 seconds 2.638 seconds 2.789 seconds 4.568 seconds 4.589 seconds 4.591 seconds 4.595 seconds 4.628 seconds 4.628 seconds 4.678 seconds 4.704 seconds 4.704 seconds 4.704 seconds 5.617 seconds 5.660 seconds 5.711 seconds 5.803 seconds 6.143 seconds 7.213 seconds 7.215 seconds 7.217 seconds 7.237 seconds 7.235 seconds 7.237 seconds 7.238 seconds 7.245 seconds 7.250 seconds 7.253 seconds 7.260 seconds 7.263 seconds 7.277 seconds 7.294 seconds 7.820 seconds 7.880 seconds 7.885 seconds 7.936 seconds 7.938 seconds 8.244 seconds 9.227 seconds total 258.807 seconds |
1.412 seconds 1.440 seconds 1.444 seconds 1.449 seconds 1.459 seconds 1.457 seconds 1.464 seconds 1.471 seconds 1.476 seconds 1.485 seconds 1.488 seconds 1.488 seconds 1.492 seconds 1.494 seconds 1.496 seconds 1.497 seconds 1.505 seconds 1.503 seconds 1.505 seconds 1.504 seconds 1.511 seconds 1.515 seconds 1.513 seconds 1.523 seconds 1.523 seconds 1.526 seconds 1.528 seconds 1.531 seconds 1.531 seconds 1.534 seconds 1.535 seconds 1.534 seconds 1.535 seconds 1.535 seconds 1.538 seconds 1.537 seconds 1.539 seconds 1.541 seconds 1.544 seconds 1.547 seconds 1.545 seconds 1.548 seconds 1.549 seconds 1.549 seconds 1.556 seconds 1.561 seconds 1.561 seconds 1.565 seconds 1.567 seconds 1.742 seconds total 75.891 seconds |
进入到/root/tool/btrace/bin
用jps查看MetadataServerLauncher 进程号 ./btrace 进程号 HttpServiceProbe.java
./btrace 29633 HttpServiceProbe.java
输出结果:
[root@tsung3924 bin]# ./btrace 29633 HttpServiceProbe.java entering HttpService com.snda.youni.wine.metadata.service.HttpService.get http://10.192.10.1 leaving HttpService com.snda.youni.wine.metadata.service.HttpService.get Time taken (sec) 0.00796 entering HttpService com.snda.youni.wine.metadata.service.HttpService.get http://10.192.10.1 leaving HttpService com.snda.youni.wine.metadata.service.HttpService.get Time taken (sec) 0.008272 entering HttpService com.snda.youni.wine.metadata.service.HttpService.get http://10.192.10.1 leaving HttpService com.snda.youni.wine.metadata.service.HttpService.get Time taken (sec) 0.008154 entering HttpService com.snda.youni.wine.metadata.service.HttpService.get http://10.192.10.1 leaving HttpService com.snda.youni.wine.metadata.service.HttpService.get Time taken (sec) 0.008569
HttpServiceProbe 示例,监控其它类可自己修改
import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.annotations.*; import java.util.*; import java.lang.*; @BTrace class HttpServiceProbe { @OnMethod(clazz = "com.snda.youni.wine.metadata.service.HttpService", method = "get") public void onGet(@ProbeClassName String pcn, @ProbeMethodName String pmn) { print("entering HttpService "); println(Strings.strcat(Strings.strcat(pcn, "."), pmn)); } @OnMethod(clazz = "com.snda.youni.wine.metadata.service.HttpService", method = "get", location = @Location(Kind.RETURN)) public void onGetReturn(@ProbeClassName String pcn, @ProbeMethodName String pmn, @Duration long d,java.util.Map paraMap,java.lang.String url) { println(url); print("leaving HttpService "); println(Strings.strcat(Strings.strcat(pcn, "."), pmn)); println(Strings.strcat("Time taken (sec) ", Strings.str(d / 1000000000.0))); println("=========================="); }]]>
update user set password = Password('root') where User = 'root';
update user set Host = '%' where user = 'root';
FLUSH PRIVILEGES;
2.从RDS下载数据到本地目录
3.解压 tar vizxf hins29776_xtra_20130915035603.tar.gz
4.执行数据恢复
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --password=root /root/data
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --password=root --copy-back /root/data
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --password=sylinx /root/data
innobackupex-1.5.1 --user=root --password=sylinx --copy-back /root/data
]]>yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \
ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel
wget http://cn2.php.net/distributions/php-5.4.7.tar.gz
tar zvxf php-5.4.7.tar.gz
cd php-5.4.7
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \
--enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
--with-gd --with-jpeg-dir
make all install
如果中途出现”virtual memory exhausted: Cannot allocate memory”错误,请加大内存
#测试php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t
#启动php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf
#关闭php-fpm
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
#重启php-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
如果连接mysql出现以下错误 “mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication”
可以用如下方法解决
修改/etc/my.cnf ,将old_passwords=1改成 old_passwords=0
执行以下更新操作:
UPDATE mysql.user SET Password = PASSWORD('sylinx') WHERE user = 'root';
FLUSH PRIVILEGES;
]]>1. 阅读代码就像阅人一样
每个函数就是一个人,一个人干一件事。感觉真的像阅人一样,发现这样也感觉有了乐趣。
2. 尽力构建并运行代码
这点大家都很清楚,在阅读代码的时候,程序不起来,你怎么知道人家写的代码是否可用,如果不行,到头来还不是白看。。。
3. 确信自己理解了所有结构
这个有点难了,如果是“全部”理解,我想1天都要花费在这个上面,理解别人的代码很容易,如果全部理解他构建的结构和思想就很难了,是在一天天的测试和代码的反复阅读中才能理解
4. 理解大概结构,进行测试和进一步的理解
这个也就是我上面说的。
5. 提取奇特代码,使其成为单独程序
这个就是我们学习的阶段了,劲量把他的东西都吸取过来,我们程序员都是吸血鬼,嘿嘿。专门吸取好的代码
6. 代码不干净?有异味?
这个阶段,我们可以小小的尝试一下,清除bug或者不好的地方,也就是重构。
7. 寻找阅读的机会,不要错失
这个很重要,我感觉。对于我们这样的有时工作到8,9点钟的人来说,阅读代码的时间很少,如果有的话,可以说是拿着钱让你去阅读代码的时候,尽量的做到最好,这样也不会浪费我们的业余时间
]]>系统安装初始化后,需要设置下更新源,在/etc/yum.repos.d/ 下新建 CentOS-Base.repo(具体内容见此),然后执行
yum update
清空和设置防火墙脚本如下:
/usr/soft/sh/flush-iptables (清空)
/usr/soft/sh/setup-iptables(设置防火墙规则)
执行以上两个脚本后,/etc/rc.d/init.d/iptables save 保存下iptables配置。启动和关闭防火墙
service iptables start
service iptables stop
service iptables status
可以通过以下命令查找并安装常用软件,如安装lftp
yum list|grep lftp
yum install lftp.x86_64
常见的zip、unzip装上
安装编译环境
yum -y install gcc automake autoconf libtool make
yum -y install pcre-devel openssl openssl-devel
编译nginx
cd /usr/soft/install
wget http://nginx.org/download/nginx-1.0.14.tar.gz
tar xvf nginx-1.0.14.tar.gz
cd nginx-1.0.14
./configure --prefix=/usr/soft/install/nginx
make & make install
建立软链接
ln -s /usr/soft/install/nginx /usr/soft/nginx
nginx80端口非ROOT用户授权
chmod u+s /usr/soft/nginx/sbin/nginx
测试nginx
/usr/soft/nginx/sbin/nginx -t -c /usr/soft/nginx/conf/nginx.conf
到http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u31-download- 1501634.html 下载 jdk-6u31-linux-x64-rpm.bin,放到/usr/soft/install下,然后执行./jdk-6u31-linux-x64-rpm.bin
建立软链接
ln -s /usr/java/jdk1.6.0_31 /usr/soft/java
测试是否正常安装
/usr/soft/java/bin/java -version
下载JETTY
wget http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/7.2.2.v20101205/
jetty-distribution-7.2.2.v20101205.tar.gz
直接解压安装
tar xvf jetty-distribution-7.2.2.v20101205.tar.gz
ln -s /usr/soft/install/jetty-distribution-7.2.2.v20101205 /usr/soft/jetty
nginx代理使用短链接的方式和后端jetty交互,会使TIME_WAIT变得比较多,解决方法如下:
编辑/etc/sysctl.conf文件,加入以下内容:
>net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tc\p_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0
vm.swappiness = 10
然后执行 /sbin/sysctl -p 让参数生效,重启下网络 service network restart
另外需要在 /etc/rc.d/rc.local里添加已使得重启的时候生效
>echo “30”>/proc/sys/net/ipv4/tcp_fin_timeout
echo “1800”>/proc/sys/net/ipv4/tcp_keepalive_time
echo “0”>/proc/sys/net/ipv4/tcp_window_scaling
echo “0”>/proc/sys/net/ipv4/tcp_sack
echo “0”>/proc/sys/net/ipv4/tcp_timestamps
vi /etc/security/limits.conf, 增加或者放开修改如下:
* - nofile 10240
我购买那会儿较早,云主机服务器时间同步有问题,经常跑得比较快,因此用如下脚本手工或者crontab定时同步
service ntpd stop
ntpdate ntp.api.bz
]]>我购买的其中一台云主机(2012.03月份购买)在应用中涉及到写磁盘,一会儿load就飙得非常高,且一段时间都无法降下来。在其它台测试就没有这个问题!
问题重现如下,登录主机敲入
time dd if=/dev/zero of=/test.dbf bs=4k count=100000
load马上飙高,期间主机基本无法响应任何请求,ssh无法操作。且要过一段时间才能恢复
解决方法: 在后台提交工单给阿里云工程师,让他们帮忙改下配置,回复内容如下:
原因已经找到了由于该机器grub里少配置了一个ide0=noprobe,导致系统盘写数据的时候没有使用pvdriver,影响了IO性能
这个原因可能是自己不小心改错了iptable设置,导致内部无法访问外网80和22端口
解决方法:清空重新设置下iptable,具体可参见阿里云主机使用笔记-环境搭建 中的防火墙设置
]]>lucene spatial3.2 版本支持geohash 和 Cartesian tier boxes位置索引
geohash 见 http://en.wikipedia.org/wiki/Geohash
Cartesian tier boxes见 http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html
目前我们索引采用 Cartesian tier boxes
传入DistanceQueryBuilder 的距离是整个检索 box的宽度和高度,不是圆形的半径
测试宽度等于10公里的检索,如下图
中间是检索的坐标点A,边上是应该被检索出的点B。10公里内覆盖取得的boxid 为 329.00385, 329.00386, B点所在的boxid 为330.00386
上述A点检索一直无法出现B点,直到扩大到35公里范围,boxid才覆盖到如下:
329.00384
329.00385
329.00386
330.00384
330.00385
330.00386
这时B点才会被检索出来,这个应该是box投影算法在大于10公里出现问题,测试代码如下:
IProjector projector = new SinusoidalProjector();
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_32);
CartesianTierPlotter ctp = new CartesianTierPlotter(0, projector, CartesianTierPlotter.DEFALT_FIELD_PREFIX);
int startTier = ctp.bestFit(15 / RATE_MILE_TO_KM);
int endTier = ctp.bestFit(3 / RATE_MILE_TO_KM);
// 测试边框索引 ,边框具体算法见 http://www.nsshutdown.com/projects/lucene/whitepaper/locallucene_v2.html
for (int i = startTier; i <= endTier; ++i) {
CartesianTierPlotter ctpt = new CartesianTierPlotter(i, projector, CartesianTierPlotter.DEFALT_FIELD_PREFIX);
System.out.println("index boxid " + i + " tier : " + ctpt.getTierBoxId(31.239853, 121.49736));
}
CartesianPolyFilterBuilder polyFilterBuilder = new DistanceTest.CartesianPolyFilterBuilder(
CartesianTierPlotter.DEFALT_FIELD_PREFIX,
startTier, endTier);
Shape shape = polyFilterBuilder.getBoxShape(31.2214, 121.428, km2Mile(35));
System.out.println("search index boxid : ");
for (Double area : shape.getArea()) {
System.out.println(area);
}
开始调试看能否扩大检索范围,发现 CartesianPolyFilterBuilder 中getShapeLoop似乎是个bug,如下图
即使在上面打上patch 大于10公里的检索仍然不是很准确
从3.4 一直升级到3.61 ,上面问题仍然没有解决。 最后升级到4.0,因为API变动比较大,改动比较多,最终修复该问题
在网上也搜索了相关的资料,Cartesian tier boxes 在大范围检索的时候会出现较多的点检索不到,且也不太精确。可以采用spatial4j+JTS实现精确检索
]]>1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&
二、停止
1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown
三、重启
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
四、不区分大小写
修改/etc/my.cnf
在[mysqld]下加入一行:lower_case_table_names=1
五、远程连接root权限用户
Grant all privileges on *.* to 'root’@'%' identified by ‘password’with grant option;
flush privileges;
]]>