文章分类 » Blog my Blog

工作内容转变,企业发展方向转变

前几个月一直在做一个项目,一直也做的好好的,是整个后台部分的负责人。虽然说公司要转型互联网,但是总的来看,有些新组建的,做新业务的部门是有所改变,正在做一些互联网产品的东西;但是对于我们部门,一个在技术和经验上都没有什么互联网方面的积累的部门,转变不是一句话的事,也不是三两天能够完成的事。

一开始接过来这个项目的时候,几乎部门所有的人员,包括产品,设计,开发,仍然是把这个项目当作了一个外包项目在做。话说回来,虽然这个项目在公司层面上仍然是个外包的项目,但是里面的性质已经不一样了。之前 公司会做一些什么样的项目呢,比如给某企业开发一个内部办公系统,给某服务商开发一个子产品,等等。那种是完全人家什么需求基本都定了,然后要我们来做,我们出体力的民工,就是码农。

但是这个项目不一样了。这个项目是在智慧城市概念的引导下,房地产商想要在自身服务上做出突破和改变而产生的需求,他们有需求要做,要改变,但是,要做成什么样,要改变成什么样,他们也没有一个非常清晰明了的概念。这就是跟之前不一样的地方了。我们要参与设计,我们要创新,并且让客户接受,让客户的客户接受;我们不能只是站在一个体力劳动者的角度去考虑问题了,我们需要站在客户的位置,站在运营者的位置和角度,去考虑我们的产品如何设计能够更美,更合理,能更吸引用户,更方便用户,如何能让我们的产品做出来之后能够方便用户。

虽然做这个软件,做这个网站仍然是客户的需求,但是我们不能再把自己只是放在一个体力劳动者的位置去干活了。我们要转型,就必须转变心态,转变思维方式,转变角度。(虽然哪怕是做外包工作时候,想要把工作做好就要持有这个心态,但是现实总是比较骨干的,终于把大家想要好好设计产品,好好做出产品的心气磨灭了之后,现在又要我们把它捡起来。)

linux系统巡检

今天开始进行线上服务器进行每日一次的日常巡检,看是否有突发问题导致系统宕机或者是否有较明显的征兆表现出来当前应用的缓慢内存泄露。

查看cpu使用率,命令: top -n1

之前没有用过这个命令,详细参数暂不考虑研究,输出此命令后在控制台输出的东西的意义如下:
top – 06:25:36 up 592 days, 10:59, 2 users, load average: 0.04, 0.03, 0.00—–(系统从开机到现在运行了多长时间)
Tasks: 177 total, 1 running, 174 sleeping, 0 stopped, 2 zombie—–(总任务数和任务状况)
Cpu(s): 0.2%us(当前用户cpu使用比例), 0.1%sy(系统使用cpu比例), 0.0%ni, 99.5%id(当前cpu剩余比例), 0.2%wa, 0.0%hi, 0.0%si, 0.0%st—–(cpu使用状况)
Mem: 48149M total(内存总数), 14024M used(当前使用的内存数量), 34124M free(当前空闲的内存数量), 220M buffers(用作内核缓存的内存量) —– (内存使用状况)
Swap: 32773M total(交换区总量), 1349M used(使用的交换区总量), 31424M free(剩余的交换区总量), 11807M cached(缓冲的交换区总量) ——(交换区总量)

检查共享内存大小 cat /proc/meminfo
查看的是/proc/目录下的meminfo文件里的内容,主要看第一个信息MemTotal:     49304924 kB,大于1G即可

 

 

 

 

JVM堆外内存溢出

一个socket服务网项目,每台机器的线程量3w左右。最后一次更新发布后,出现了一个奇怪的问题,就是运行一段时间之后,jvm的堆外内存就会基本被占用完,需要重启一次服务器才行。为了服务器安全,设置了一个内存使用上限比例,当服务器内存使用比例到达这个数值之后,就不再接收用户的请求,表现出来的现象就是用户无法登陆了。问题很严重。

经过几位高级工程师的讨论和分析,猜测造成这种现象可能的原因有两个:
1.我们的应用中使用了ByteBuffer.allocateDirect ,这种方式会使用堆外内存,但由于线上服务器使用的jdk版本时 6.32之前的一个版本,在此之前的版本中存在堆外内存回收的bug,因此认为可能是这个原因导致了当前问题。
2.jdk工具包中的java.util.zip.Deflater方法会使用堆外内存,同时,这个方法还存在内存释放方面的bug。我们的应用中使用了xmpp,据说这个会很频繁的调用这个方法,有可能是这个原因造成的服务器堆外内存溢出 。

但是堆外内存很难检测,按照文章中的推荐,需要使用工具查看我们的应用中是否有不停的调用这个方法,推荐的工具是google-perftools。这个东西还没怎么用过,需要了解一下怎么安装和使用。尽快把环境部署起来吧。