Debian从lenny升级到squeeze及常用的源
2011-04-29, Nortan Posted in 操作系统 | 1 回复 | 查看全文>>
debian 6 (squeeze)发布一段时间了,我也应该从lenny升级到squeeze了吧,升级还是很容易,三步走:
第一步:修改更新源为debian 6.0
$sudo vi /etc/apt/sources.list
deb http://ftp.debian.org/debian/ squeeze main non-free contrib
deb http://ftp.debian.org/debian/ squeeze-proposed-updates main non-free contrib
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
第二步:更新源及软件包 查看全文…
Debian32位Linux系统大内存支持
2011-04-24, Nortan Posted in 操作系统 | 1 回复 | 查看全文>>
公司的服务器为2G的内存,使用free命令查看,明显不够用了,现在使用了大量的交换分区,那么,就升级内存吧,两条4G的kingston内存就这样补加上了,但原来的系统是Debian32位Linux系统,上8G内存根本不支持,使用free命令查看,只支持3.1G的内存!如果换64位的系统比较麻烦,服务器上安装配置的东西太多了,只能升级系统内核来解决了,debian提供了bigmem内核,在升级之前,第一步需要更新一下源:
$sudo apt-get update
第二步就是查看一下自己当前的内核:
$uname -a
我当前服务器的内核是Linux mail 2.6.18-6-686 #1 SMP Sat Feb 20 00:15:53 UTC 2010 i686 GNU/Linux,可能你的系统的内核不是这个,所以第三步查看一下有哪些bigmem内核可以对应当前内核升级 查看全文…
Debian安装使用SNMP v3
2011-04-22, Nortan Posted in 常用技术, 操作系统, 配置 | 我来说两句 | 查看全文>>
SNMP能很好的监控你的服务器各项运行指标,如CPU使用率,内存情况,io情况等等,前面也写了一文章《debian系统中使用mrtg监控服务器的cpu、内存、网络等等情况》关于监控服务器性能的,其底层也是用SNMP来做监控,这里主要说一下在Debian中安装SNMP
一.安装SNMP
sudo apt-get install snmpd
二.配置snmpd
安装snmp后,系统会自动启动它,所以配置前首先停用snmp 查看全文…
使用inadyn与dyndns在debian中提供动态域名解析
2011-03-24, Nortan Posted in 操作系统, 配置 | 1 回复 | 查看全文>>
国内如花生壳等等动态域名服务商实在是不争气,不仅价格一年一年涨,服务还不怎么滴,免费的花生壳就更不怎么样了,经常性出现解析不了!!!不得以注册了dyndns的免费域名,同时使用inadyn提供在debian系统中的动态域名解析服务。
dyndns的免费域名注册不多说了,这里说一下在debian如何配置inadyn,并提供开机后台启动。
inadyn的安装:
$sudo apt-get install inadyn
inadyn的配置:
inadyn的默认配置文件为/etc/inadyn.conf,安装inadyn后,这个文件并不存在,所以需要通过vim创建。
$sudo vim /etc/inadyn.conf
开打vim后,输入如下配置内容: 查看全文…
用生产消费者模式实现数据队列定时或定量的异步存储
2011-03-06, Nortan Posted in Java, 一起分享 | 1 回复 | 查看全文>>
需求:
最近在考虑IM软件服务器端编程,有这样一个需求,就是把用户发的信息,全部保存到数据库中,如果是一般的web应用,可能就直接把用户提交的数据写入数据库了,但IM的信息的特点时,需要响应快(实时处理),数据量大,根据这个特点,我设计成接收转发模块与数据写入数据库为不同的模块,很明显,他们满足生产消费者模式,即某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。生产者与消费者并没有构成生产消费者模式,而生产者生产的数据由消费者消费的过程才能构成生产消费者模式。
设计:
生产者和消费者模式实现方式很多,但在实现的时候我们至少需要考虑生产消费解耦、支持并发、支持生产消费忙闲不均的情况。
一、解耦
假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化,可能会影响到生产者。而如果两者都依赖于某个缓冲区,两者之间不直接依赖,耦合也就相应降低了。这个缓冲区我们可以用一个列队实现。
二、支持并发(concurrency)
生产者直接调用消费者的某个方法,还有另一个弊端。由于函数调用是同步的(或者叫阻塞的),在消费者的方法没有返回之前,生产者只好一直等在那边。万一消费者处理数据很慢,生产者就会白白糟蹋大好时光。
使用了生产者/消费者模式之后,生产者和消费者可以是两个独立的并发主体。生产者把制造出来的数据往缓冲区一丢,就可以再去生产下一个数据。基本上不用依赖消费者的处理速度。其实当初这个模式,主要就是用来处理并发问题的。这样高并发下,用户感觉响应很快:)
三、支持忙闲不均
缓冲区还有另一个好处。如果制造数据的速度时快时慢,缓冲区的好处就体现出来了。当数据制造快的时候,消费者来不及处理,未处理的数据可以暂时存在缓冲区中。等生产者的制造速度慢下来,消费者再慢慢处理掉。
除了以上三个需要考虑的,在我的项目中,我还要考虑与数据库的交互不能太频繁,只能满足一定数据量时,使用批量方式写入数据库(定量写入),这个实现本身很简单,但如果考虑到服务器清闲时,很长时间都达不到这个数据量,但这段时间内可能会停机,没有写入数据库的数据就可能丢失,所以在给定的一段时间里,数据量没有到达给定数据的条件,只要达到时间条件,也需要写入数据库。
实现:
基于以上的想法,我们可以使用java.util.concurrent.BlockingQueue来实现,这里仅分析一些关键代码 查看全文…