为什么不选择Apache/mod+resin?
前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵
)。操作系统强烈要求安装64位,32位操作系统jvm只能识别不到2G的内存,印象中是1.57G(单实例应用)。下面总结自己的一些调优方法及配置。
调优硬件环境
CPU:Intel Xeon*2(双核)
MEM:8G
SWAP:1G
一、测试32系统所支持的最大可用内存
java -XmxXXXXM -version
不断加大-Xmx的大小,截止到出现以下提示:
Could not create the Java virtual machine.
二、Nginx配置
location / {
root /var/www/app.cn;
index index.jsp;
proxy_pass http://localhost:8080;
include /usr/local/nginx/conf/proxy.conf;
}
location ~* \.(jsp|do|shtml)$ {
root /var/www/app.cn;
index index.jsp;
include /usr/local/nginx/conf/proxy.conf;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
}
以代理的方式进行整合,静态文件继续由Nginx来解析,扩展名为jsp|do|shtml才丢给后端resin来处理。即使resin发现的故障,前端最多只会报500、502 time out的信息。
前面一直使用该模式,mod_caucho暴露源码的bug一直未得到彻底的解决。因此切换到Nginx+resin平台。硬件上要求除了内存一定要足够大(建议>4G),无其它要求(当然也不能太破,呵呵
)。操作系统强烈要求安装64位,32位操作系统jvm只能识别不到2G的内存,印象中是1.57G(单实例应用)。下面总结自己的一些调优方法及配置。调优硬件环境
CPU:Intel Xeon*2(双核)
MEM:8G
SWAP:1G
一、测试32系统所支持的最大可用内存
java -XmxXXXXM -version
不断加大-Xmx的大小,截止到出现以下提示:
Could not create the Java virtual machine.
二、Nginx配置
location / {
root /var/www/app.cn;
index index.jsp;
proxy_pass http://localhost:8080;
include /usr/local/nginx/conf/proxy.conf;
}
location ~* \.(jsp|do|shtml)$ {
root /var/www/app.cn;
index index.jsp;
include /usr/local/nginx/conf/proxy.conf;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
}
以代理的方式进行整合,静态文件继续由Nginx来解析,扩展名为jsp|do|shtml才丢给后端resin来处理。即使resin发现的故障,前端最多只会报500、502 time out的信息。
对MooseFS有了一定的了解,现在可以压压它的性能了,使用的是iozone IO测试工具。测试命令为:
./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C
测试说明
1、/mnt/mfs/logs/test.tar.gz大小为9.2G,大于服务器物理内存(8G)。
2、获取挂载的分区的write、re-write、read、re-read数据。
测试数据
一、reader report


./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C
测试说明
1、/mnt/mfs/logs/test.tar.gz大小为9.2G,大于服务器物理内存(8G)。
2、获取挂载的分区的write、re-write、read、re-read数据。
测试数据
一、reader report
有了测试环境,现在开始一步步来学习Moosefs的特性,现整理了一些,不断添加中... ...
1、/mnt/mfs空间的大小为chunkserver定义空间空闲的大小,已使用空间为mfs所存储的数据容量。
2、在任一台client执行chmod -R nobody:nobody /mnt/mfs(任意操作),所有client看到的结果是一样的。
3、mfschunkfile 用来检查给定的文件以多少副本数来存储。
#mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz
/mnt/mfs/folder1/mfs-1.6.15.tar.gz:
1 copies: 1 chunks
说明有一个副本存储在一个 chunk里。
4、设定、查看的目标mfssetgoal、mfsgetgoal副本数
mfssetgoal 3 /mnt/mfs/folder1
mfsgetgoal /mnt/mfs/folder1
5、mfsdirinfo 显示了目录、文件及 chunks 的数目,还有整个目录占用磁盘空间的情况
mfsdirinfo /mnt/mfs/floder1/
inodes: 2
directories: 1
files: 1
chunks: 1
length: 44145890
size: 44176384
realsize: 88352768 包括所有副本的大小。
1、/mnt/mfs空间的大小为chunkserver定义空间空闲的大小,已使用空间为mfs所存储的数据容量。
2、在任一台client执行chmod -R nobody:nobody /mnt/mfs(任意操作),所有client看到的结果是一样的。
3、mfschunkfile 用来检查给定的文件以多少副本数来存储。
#mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz
/mnt/mfs/folder1/mfs-1.6.15.tar.gz:
1 copies: 1 chunks
说明有一个副本存储在一个 chunk里。
4、设定、查看的目标mfssetgoal、mfsgetgoal副本数
mfssetgoal 3 /mnt/mfs/folder1
mfsgetgoal /mnt/mfs/folder1
5、mfsdirinfo 显示了目录、文件及 chunks 的数目,还有整个目录占用磁盘空间的情况
mfsdirinfo /mnt/mfs/floder1/
inodes: 2
directories: 1
files: 1
chunks: 1
length: 44145890
size: 44176384
realsize: 88352768 包括所有副本的大小。
参考了老田的译文《moosefs-step-by-step-tutorial-cn》,自己也着手部署测试环境,现将安装过程整理出来。
安装环境
Master Server
192.168.72.32 Centos5.4(64X)
Metalogger Server
192.168.17.33 Centos5.4(64X)
Chunk Servers
192.168.17.34 Centos5.4(64X)
192.168.17.35 Centos5.4(64X)
Client Server
192.168.17.36 Centos5.4(64X)
192.168.17.41 Centos5.4(64X)
192.168.17.42 Centos5.4(64X)
192.168.17.43 Centos5.4(64X)
master 安装
mkdir -p /home/install/moosefs/
cd /home/install/moosefs/
groupadd mfs
useradd -g mfs mfs
wget http://m.install.server.com/install/moosefs/mfs-1.6.15.tar.gz
tar -zxvf mfs-1.6.15.tar.gz
cd mfs-1.6.15
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/www/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-
mfsmount
make && make install
安装环境
Master Server
192.168.72.32 Centos5.4(64X)
Metalogger Server
192.168.17.33 Centos5.4(64X)
Chunk Servers
192.168.17.34 Centos5.4(64X)
192.168.17.35 Centos5.4(64X)
Client Server
192.168.17.36 Centos5.4(64X)
192.168.17.41 Centos5.4(64X)
192.168.17.42 Centos5.4(64X)
192.168.17.43 Centos5.4(64X)
master 安装
mkdir -p /home/install/moosefs/
cd /home/install/moosefs/
groupadd mfs
useradd -g mfs mfs
wget http://m.install.server.com/install/moosefs/mfs-1.6.15.tar.gz
tar -zxvf mfs-1.6.15.tar.gz
cd mfs-1.6.15
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/www/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-
mfsmount
make && make install
关于Func非Python API实现远程调用,目的是给第三方工具提供调用及返回接口。Func使用func-transmit命令来实现,支持YAML 1.0 与 JSON,使用上非常简单。例子如下:
YAML格式
#vi run.yaml
JSON格式
#vi run.json
参数说明
clients 目标主机,"*"代码所有被控主机。
async 是否异步,是一个bool值,True为使用异步,False则不使用。
nforks 启用的线程数,用数字表示。
module 模块名称,如command。
method 方法名称,如command模块下的run方法。
parameters 参数,如"/usr/bin/tail -100 /var/log/messages"。
YAML格式
#vi run.yaml
JSON格式
#vi run.json
参数说明
clients 目标主机,"*"代码所有被控主机。
async 是否异步,是一个bool值,True为使用异步,False则不使用。
nforks 启用的线程数,用数字表示。
module 模块名称,如command。
method 方法名称,如command模块下的run方法。
parameters 参数,如"/usr/bin/tail -100 /var/log/messages"。










