12月 09

raspberry pi安装 java mysql tomcat

  raspberry pi安装 java mysql tomcat。开始用oracle通的arm进行安装但是遇到了问题没有成功。后来还是采用apt-get安装,还是非常简单
$ sudo apt-get install openjdk-7-jdk mysql

版本如下:
Server version: 5.5.28-1 (Debian)
java version “1.7.0_07”

  tomcat也能直接安装,但是出于需要,还是直接到apache上下载。解压,默认配置启动。能看到可爱的小猫了。

rp tomcat

raspberry pi 安装tomcat

  查看配置源
$ vim /etc/apt/sources.list

  通过到源上查看haproxy、nginx、apache2、squid、tomcat7、cacti、nagios、snmp、redis、rsync、samba、python、php、lua、node.js等应有尽有,直接用工具安装非常方便。以后不再用考虑环境准备工作了。下一步开始准备做点实用的东西。

  对于要用桌面系统要还需要安装字体等
中文字体
$ sudo apt-get install ttf-wqy-microhei
输入法
$ sudo apt-get install scim scim-pinyin
音频驱动:
$ sudo apt-get install alsa-utils

4月 10

java 内存泄露问题查找

  之前已经查找过java运行越来越慢的问题,用了visualvm工具,文档详见:http://www.simonzhang.net/?p=950。只是查到了内存泄露,知道由某类问题导致,但是不能具体到类上,不能定位到是什么资源导致内存泄露,所以需要进一步查看。
  通过google学习,找到了JRockit Mission Control 4.1。此工具已经免费,直接到oracle下载相关包。下载位置:
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html
  下载Oracle JRockit 6 – R28.2.2其中包含JRockit Mission Control 4.1和JRockit Real Time 4.1。直接下载了linux的64位的bin文件,上传到服务器上安装并替换当前的jdk。命令记录:
# chmod 755 jrockit-jdk1.6.0_29-R28.2.2-4.1.0-linux-x64.bin
# ./jrockit-jdk1.6.0_29-R28.2.2-4.1.0-linux-x64.bin
系统会弹出安装界面,我开启了X11可以远程使用图形化界面。真是有oracle的风格呀。

# mv jrockit-jdk1.6.0_29-R28.2.2 /usr/local/jrockit-jdk1.6.0_29-R28.2.2
  编辑/etc/profile添加
JAVA_HOME=/usr/local/jrockit-jdk1.6.0_29-R28.2.2
CLASSPATH=$JAVA_HOME/jre/lib/ext/jcert.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/jpda.jar:$JAVA_HOME/lib/tools.jar
PATH=.:$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME PATH CLASSPATH
  保存过后加载资源,然后启动JRockit Mission Control
# source /etc/profile
# cd /usr/local/jrockit-jdk1.6.0_29-R28.2.2/bin/
# jrmc
  启动后可以看到图形化界面,“启动Memleak”

  找到消耗内存大的部分,列出所有实例看看什么数据占用过多,然后在处理。如果下图

4月 05

越来越慢的java问题

  新上线了一个接口,但是导致整个服务越来越慢。之前所做的压力测试结果也不错,五百并发只要十几秒。因为没有做疲劳测试,当前看来还是有问题。但是具体哪里出了问题还不清楚,需要详细查看。我也不是java开发所以只能是协助分析,先找了个分析工具看看导致瓶颈的主要原因。下载http://java.net/projects/visualvm/downloads/download/release134/visualvm_134.zip,解压缩后直接使用。
  解压缩后在文件夹的bin目录下有两个可执行文件,一个是exe的windows下使用的,另一个是linux下使用的。直接将解压的目录上传到linux操作系统中。准备运行,需要注意的是,linux下运行需要用到图形化,所以要用putty这类的小工具需要开启X11。
  启动# sh visualvm。在左侧可以看到已经启动的容器,打开resin服务。等待运行一段时间如图:
  经过更长时间对比,确定应该是内存泄露问题。因为内存值不断在增长,直至将系统资源占满。正常的接口,进行压力测试时,内存和CPU的值均比较平衡。具体问题使用sampler进行分析,应该是字符转换存在问题,并且没有释放。我直接反馈给开发人员,具体问题就不清楚了,在此做个简单记录。