ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 7月26日——菜鸟工作记录之业务扩容并发连接数个人总结

7月26日——菜鸟工作记录之业务扩容并发连接数个人总结

原创 Linux操作系统 作者:kexiangyu 时间:2011-07-26 21:26:54 0 删除 编辑

今天继续昨天的测试,昨天说道突破JAVA瓶颈后,通过开启多个JAVA程序来增加总的连接数。今天的重点则在于processes参数。

首先,在Unix/Linux下执行ulimit –u查看系统可以分配给用户的最大进程数,查看了一下自己的测试环境,2047。感觉有点小得坑爹,于是使用ulimit –u unlimited来取消限制进程数。然后Oracle中设置processes参数3800。于是开启昨天的JAVA程序,每个程序600个连接,今天对每个连接都加入了一些select语句,无关紧要的。开了4个程序以后陆续有程序挂掉,找原因,查看v$pgastat,最大连接为2046,然后加不上去了。刚开始没有认真看JAVA返回什么错误,因为昨天JAVA挂掉的时候返回的错误和今天在格式上相当像,于是自己瞎折腾20分钟左右吧,没有任何结果。终于认真看了一下JAVA报的错误,说是返回一个-1,于是百度了一下,虽然没有和我一样错误的,但是基本上都反映出来说是listener的错误,于是去看了listener.log文件,发现文件末尾出现了错误信息

26-JUL-2011 11:05:58 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=xiangyu.ke))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.2.40.42)(PORT=63896)) * establish * orcl * 12518

TNS-12518: TNS:listener could not hand off client connection

 TNS-12536: TNS:operation would block

  TNS-12560: TNS:protocol adapter error

   TNS-00506: Operation would block

    Linux Error: 11: Resource temporarily unavailable

26-JUL-2011 11:05:59 * service_update * orcl * 0

这个蛋疼了,百度google一起上,找了半天没有结果,到了饭点了,吃饭去。

饭后回来,我知道以我的能力想要在很短的时间内解决是不太可能的,想着去问了浔阳好了,于是找来浔阳。刚开始浔阳没有看到错误中的最后一行,linux error11,于是也折腾了很久,包括文档中TNS-12518错误的解决方法,文档中描述是重启listener,然后重新执行操作,试验之后以失败告终。当注意到这行时,也查了一些资料,找到问题源头,那就是unix/linux中的“maximum number of processes”参数,之前ulimit命令修改之后还需要修改这个参数才可以使得进程的限制得到释放。在万旺的提示下,浔阳在/etc/security/limits.conf中,修改soft nproc参数为5000+shutdown数据库,然后重启数据库,遂解决问题,万旺说之前在做业务扩容的时候也遇到过这个问题,也折腾了一段时间。再次测试,连接如愿能达到3800,查看PGA使用情况,忘了多少,貌似2G多把,主机内存还剩好多G,就不接着做测试了,大致的解决方式是有了。

总结一下,做业务扩容扩大并发连接数,首先有三个Oracle的初始化参数制约,分别是processeslicense_max_sessionslicense_max_usersProcesses为最大可以分配的oracle进程数,在dedicated server模式下,一个连接都会有一个专用进程为其服务,所以除了一些后台进程和用户进程外,一个连接就是一个进程,processes是一个静态参数,必须在启动前在初始化参数文件中设置。然后license_max_sessionslicense_max_users表示最大的连接数和最大用户数量,默认设置为0,表示没有限制。影响processes参数的系统资源为系统最大的进程数,可以用ulimit –u unlimited | nunlimited为没有限制,n为设定的最大进程数),然后还需要修改unix/linux中的maximum number of processes参数,具体修改方式为/etc/security/limits.conf中,修改soft nproc。然后如果PGA使用自动管理,在不超过内存上限的情况下,是不用担心PGA造成的并发瓶颈(手动管理PGA可能到达PGA的最大值时,就需要修改PGA的参数了,具体有待试验),如果真是内存造成了瓶颈,则需要增大内存,或者手工kill掉一些非活动的会话。有时也有可能是应用程序的原因造成连接数上不去,在监控以上几个Oracle数据库的资源使用情况之后,如果发现一切正常,则有可能需要检查一下应用程序是否资源不足,就比如我昨天的JAVA堆内存满了的情况。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22232708/viewspace-703171/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-07-24

  • 博文量
    4
  • 访问量
    6258