吵吵   2019-01-31  阅读:2,378

最近服务器相当的不稳定,每天都会宕机。

挂了的时候所有的程序都连接不上数据库,大概过10分钟左右又好了!

找来找去说是数据库的License不够了,所以不让新的连接上来,那就纳闷了。虽然Intersystem公司卖的License贼贵,一个就要十万块,但是通过加上ECP,基本上就多出来1000个License Units,咋还会不够用呢?

去Potal的License Usage 里面看看,找到License Usage by User,你会发现原来它会计算Connections,也就是连接数,同一个IP对应多个连接数但是UserID还是一样的,也就是说你开N个连接或者程序,UserID都是相同的,而且都是IP地址,当然,用的License也就是一个!

但是问题来了:

If the number of processes exceeds this maximum, a transition occurs and Caché begins allocating one license unit per process for that user ID. The system presumes that if more than maxconn connections are associated with a user ID, multiple users are accessing Caché through an intermediary, (for example, a firewall system) so additional license units are required. Therefore, when the (maxconn + 1) process starts, the number of license units allocated to that user ID changes from one to (maxconn + 1). Processes started by the Job command are allocated against the process limit of the user ID invoking the Job command.

原来一个License的进程数或者连接数是有最大限制的,如果超过这个最大限制的话,那就变成了每个连接都使用给一个单独License,难怪服务器会爆掉了。

w $System.License.MaxConnections()

比如我这边看最大连接数是25。

那就很少了,设备启动时候的用Job函数增加的进程也算在内,如果我们在这台电脑启动多个接口那就占用了多个进程数量了,万一多开几个程序,那完了,就爆了!

话说,英文好的同学告诉我,Processes started by the Job command are allocated against the process limit of the user ID invoking the Job command.到底算不算?

想了半天为啥有这么个奇葩的规定?

后来想想可能是为了控制你不用路由器的,如果你用路由的话对公网的IP地址都是一样,Cache就没法判断你到底有多少个终端了!

好了,只能想办法优化一下连接数了!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

一条回应:“Cache数据库的License”

  1. 嘘嘘说道:

    十万一个?

发表评论

电子邮件地址不会被公开。 必填项已用*标注