Thursday, July 22, 2010

Ubuntu10.04上apache2: bad user name ${APACHE_RUN_USER}问题解决


1. 安转apache2
# sudo apt-get install apache2

2. 安装完毕后,使用命令“apache2 -k graceful”启动的时候报以下错误
apache2: bad user name ${APACHE_RUN_USER}

3. 检查/etc/apache2/apache2.conf文件,发现其中需要使用/etc/apache2/envvars文件中的以下几个环境变量
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid
但是在检查这几个环境变量时发现配置的用户名合组都是存在的

4. 后来发现如果不用脚本而改用启动系统服务的方式,就可以避免上面问题
# sudo /etc/init.d/apache2

5. 将自己的html文件放置在/var/www/目录下,然后访问http://localhost/,一切ok!

Linux上几个系统监控工具

1. htop
http://htop.sourceforge.net/
sudo apt-get install htop

2. dstat
http://dag.wieers.com/home-made/dstat/
sudo apt-get install dstat

3. bmon
http://freshmeat.net/projects/bmon/
sudo apt-get install bmon

4. iftop
http://www.ex-parrot.com/pdw/iftop/
sudo apt-get install iftop

5. ifstat
http://gael.roualland.free.fr/ifstat/
sudo apt-get install ifstat

Thursday, March 18, 2010

Birt的Performance问题分析与解决

昨天晚上收到Yi的邮件,说让我抽时间看看Hengri的那个Birt的Performance问题。今天早上一到公司就开始忙着搭了一个环境,开始弄了。
这个问题是在Birt里嵌入一段我们自己写的代码来调用一些已有的类去取得配置在文件中的数据库信息,这里因为数据库的用户名和密码是加密的,所以不能直接写在rptdesign文件中,而只能通过调用原来已有的类来取得数据库信息。而每次在调用这个类之后,都会导致Birt产生报表特别慢,并且CPU居高不下,而如果不调用这些类,同样的查询条件,同样的数据,同样的数据库都会很快的返回,用时相差25-30倍。
对于这个问题,首先想到的是由于birt是嵌入的JavaScript语句在rptdesign文件中,是不是Birt会重复加载我们使用的那些类?于是我们在那些类中加了一个静态域,并且加了一些log在静态域和构造函数中。但是结果是,静态域只被执行了一次,那就是没有重复加载那些类。这个想法不对。
然后想到由于每次都会特别消耗CPU,所以就用了JDK6自带的jvisualvm来profile,于是将环境转换到JDK6上,开始profile CPU信息,结果发现CPU耗时多的地方并不是birt和我们自己的类,而都是一些系统类,仅仅从这些信息看不出有什么特别,因此这个想法也被排除了。
最后,想到了是不是可以dump thread信息在CPU特别忙的时候,于是,我们dump了很多组数据,开始分析thread信息。这是我们发现在CPU特别忙的时候总是有一个线程(就是Tomcat中Birt产生报表的线程)很特别,这里特别是因为只有它有特别长的堆栈信息,一眼就可以看出,并且是和birt已经mozilla的javascript库相关。而且,这些组数据中,虽然最上边的堆栈并不是停留在同一个位置,但是在堆栈中部却都有一个mozilla的javascript的importPackage方法信息。于是找来rptdesign文件,发现在代码中果然有importPackage(Packages.x.y.z);看到这里就想是不是这里的importPackage有问题,于是就把这一句给删除了,然后在底下调用的时候全部使用类的全路径,一试,果然问题没有了。
但是原因却没有搞明白,等以后再慢慢找吧。
总结:感谢老天,我运气太好了,不小心搞定了。

Wednesday, October 21, 2009

老婆说有点像我

故事出处找不到了,内容如下:

从前,有位年轻的猎手,他枪法极准但总捕猎不到大雁,苦恼的他找一位长者求教。

长者把他领到一片大雁栖息的芦苇地,指着站得最高的一只大雁说:"那只大雁是放哨的,我们管它叫雁奴。它只要一发现异常情况就会向雁群报警,所以接近雁群往往是很困难的。但我有办法,你现在故意惊动雁奴再潜伏不动。"年轻人照做了。雁奴发现年轻人后立即向同伴发出警告,正在栖息的雁群闻讯后纷纷出逃,但没发现什么,便又飞回原地。长者让年轻人如法炮制了好几回。终于,几乎所有的大雁都以为雁奴谎报军情,纷纷把不满发泄在雁奴身上,可怜的雁奴被啄得伤痕累累。"现在,你可以逼近雁群了。"长者提醒道。于是,年轻人大摇大摆地走进了芦苇地,雁奴虽瞧在眼里但也懒得再管,年轻人举枪......

悲剧往往就是这样发生的:忠诚的人被误解,被误解的人不能坚持到底。

Thursday, October 15, 2009

Ubuntu9.04上看电影加载中文字幕乱码问题

最近在我的Ubuntu9.04上看电影总是加载中文字幕的时候出现乱码,后来发现是字符编码的问题,今天休假在家就写了一个小的字符转码的程序,目前来说满足我自己的需求了,代码如下:

import sys,io

if len(sys.argv) != 2:
print "Please input file path!"
else:
f1 = io.open(sys.argv[1], "r", encoding="cp936")
f2 = io.open(sys.argv[1] + ".new", "w", encoding="utf-8")

for line in f1:
f2.write(line)

f1.close()
f2.close()

Wednesday, October 14, 2009

Linux代理服务配置

1. 安装squid服务
2. 配置/etc/squid/squid.conf文件
acl all src 0.0.0.0/0.0.0.0
http_access allow all
由于我是内网使用,所以权限配置就全开放了。
3. 启动squid服务,默认的端口是3128
service squid restart

Sunday, October 4, 2009

《三杯茶》

我:你看那本《三杯茶》了没有?
老婆:看了。
我:怎么样?
老婆:挺好的,讲人性的。
我:啊,你看懂了,我看了一点咋没看懂。
老婆:那当然了,你没有人性么。