十万的License只取决于一个连接

前段时间看到一份代码,小规模、低难度的一个应用,MVC用到极致,业务逻辑却混成一团麻,应该是中了培训班的毒。现在的程序员,大多是没仔细读过《现代操作系统》,没看过编译原理,不知道堆与栈,没怎么用过C、C++,上手就Java、C#,程序一开就内存狂飙,数据库连接随手就建,但这种人算是相当多了,见多了也就习惯了。
前两天看到一篇文章,作者使用的是InterSystems的数据库,这是一个美国公司,为医疗卫生行业提供重要的网络平台,不少国外的IVD厂商都有用到。作者描述的问题很简单:
服务器相当的不稳定,每天都会宕机。
挂了的时候所有的程序都连接不上数据库,大概过10分钟左右又好了!
找来找去说是数据库的License不够了,所以不让新的连接上来,那就纳闷了。虽然Intersystem公司卖的License贼贵,一个就要十万块,但是通过加上ECP,基本上就多出来1000个License Units,咋还会不够用呢?
首先,License 授权是个相当复杂的计算方式,拿 SQL Server 来说,SQL Server不同的版本有不同的功能,不仅价格颇有差异,获得许可的方式也不尽相同,高的有1万9千多刀,总的来说,有两种基本的授权(License)模式。
一、“每处理器”或“每核”模式
“每处理器”(Per Processor)授权模式只计算物理处理器的数量,与物理处理器的内核数量无关。按“每核”(Per Core)计数,同时还需要计算物理处理器(插槽)的数量,单个插槽最低需要购买4核。
这一授权模式可以很好的简化授权的复杂程度,不用统计有多少用户(或者设备)会访问SQL Server,以及是防火墙内部还是来自Internet的外部连接。
二、“Server+CAL”模式
CAL即客户端访问许可(Client Access License),分为设备访问许可(Device CAL)和用户访问许可(User CAL)两类。SQL Server及其组件(例如报表服务)提供服务,客户端则是访问这些服务的设备或用户。
购买CAL时需要考虑有多少客户端需要访问SQL Server并从中获取数据,客户端的计算方式与中间层无关,只与最终有多少客户端能够获取(包括浏览、修改、删除数据等)SQL Server服务器中的数据有关。
标准功能每客户端大概940刀。
回到主题,作者在License Usage 里面看到License Usage by User,同一个IP对应多个连接数但是UserID还是一样的,也就是说你开N个连接或者程序,UserID都是相同的,而且都是同一IP地址,当然,用的License也就是一个,但是,你会发现原来它会计算Connections,也就是连接数。
问题来了:
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,难怪服务器会爆掉了。
比如我这边看最大连接数是25。
那就很少了,设备启动时候的用Job函数增加的进程也算在内,如果我们在这台电脑启动多个接口那就占用了多个进程数量了,万一多开几个程序,那完了,就爆了。
为啥有这个规定呢?
可能是为了控制你不用路由器的,如果你用路由的话对公网的IP地址都是一样,Cache就没法判断你到底有多少个终端了。
对于这种问题能怎么办呢,只能想办法优化一下连接数了。
这里要吐槽一下,国内的LIS厂家开发人员的水平跟互联网公司差十万八千里,当然,也可以推到DBA身上,因为99.99%的LIS厂家和大部分的医院都没有DBA。无论是内部开发还是第三方调用,都是一个用户,完全不考虑安全性问题,或者也有考虑安全性的,就是不开放数据访问,也不提供接口,逼第三方去想歪招;不过我已经看到有些LIS厂家已经开始提供WebService接口了,虽然没有遵循ASTM协议或HL7协议,但也是一个进步。
回到最前面说到问题,小应用场景或开发环境下,该做的优化不做,如果遇到这样的问题呢,总不能让客户花十万买License,只有优化连接数了,优化、测试的时间成本呢,客户的时间成本呢,或者客户能等你改好吗?
十万的License只取决于一个连接的更多相关文章
- PPTP VPN 限制一个账号只允许一个用户来登录
创建auth-up文件 vi /etc/ppp/auth-up chmod a+x /etc/ppp/auth-up auth-up脚本内容如下 #!/bin/sh # get the usernam ...
- VC只运行一个程序实例
方法有很多,以下只是提供一种用的多的 一. 单文档程序 在程序App类的InitInstance中添加如下代码 BOOL CDDZApp::InitInstance() { /*只运行一个实例*/ / ...
- 37.QT-QTSingleApplication-程序只运行一个实例
QTSingleApplication由Qt官方提供的,用于实现只启动一个实例,并在启动时可以向向另一个实例通信(依赖于QtNetwork模块) QTSingleApplication下载路径:链接: ...
- 从米家到 HomeKit,你只需要一个树莓派
转载:从米家到 HomeKit,你只需要一个树莓派 2017.10.21 该教程针对 Raspbian Stretch (8 月起基于新版 Debian 的系统)更新,请注意文章中提示 Stretch ...
- nginx与apache 对比 apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
nginx与apache详细性能对比 http://m.blog.csdn.net/lengzijian/article/details/7699444 http://www.cnblogs.com/ ...
- win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法
如上图所示,桌面或其他大部分地方点击右键菜单,都只显示一个白色框,鼠标移上去才有菜单项看,并且效果很丑 解决办法: 计算机-右键-属性-高级-性能-设置-视觉效果-淡入淡出或滑动菜单到视图,将其前面的 ...
- Android 只开启一个Activity实例
在一个Activity中,多次调用startActivity()来启动另一个Activity,要想只生成一个Activity实例,方法有两种. 方法一:设置起动模式 一个Activity有四种启动模式 ...
- form表单里如果只存在一个文本框,enter键提交
在这里说一说浏览器里form表单的默认行为 我们都知道浏览器是存在很多默认行为的,可能是出于常用行为考虑又或者是历史原因.但有时候我们不需要这些默认行为.以下: 1).当form表单里只存在一个inp ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
随机推荐
- h5向上翻页图标晃动动画,css固定h5向上翻页图标在页面上
//html结构<div class='upImg'><div> //css .upImg { background-image: url(../images/01.png); ...
- C# Task注意事项
1.在Task中调用主线程控件 Task.Factory.StartNew(() => { }).ContinueWith(task => { this.Invoke(new Action ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- Nginx控制并发连接数
ngx_http_limit_conn_module这个模块用于限制每个定义的key值的连接数,特别是单IP的连接数. 不是所有的连接数都会被计数.一个符合计数要求的连接是整个请求头已经被读取的连接. ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 2
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 1------------------- 建立如下数据表 CREATE ...
- go语言开发环境、goland、IDE
1.下载: https://studygolang.com/dl 可以从这个网址下载,版本根据你的系统来: 64位系统,可以下载推荐版本: 我安装的是32位系统,下载的是下面这个: 如果你的是其他的系 ...
- Ubuntu 18.04 修改为静态IP
1.进入/etc/netplan目录 cd /etc/netplan 2.查看文件 ls 3.编辑 01-network-manager-all.yaml vim 01-network-manager ...
- python2编码的问题
1,python2的默认编码是ascii码. 2,python2中有2中数据模型来支持字符串这种数据类型,分别为str和unicode. 3,uncode转换为其他编码是encode,其他编码转换成u ...
- RHEL7.3安装python3.6.1
RHEL7.3 install python3.6.1 steps 1. download Python-3.6.1.tgz2. tar -zxvf Python-3.6.1.tgz3. yum in ...
- python下wxpython程序国际化的实践(中文英文切换)
一.什么是python的国际化(I18N) 有关I18N,百度上解释一大堆,个人比较喜欢这个说法. i18n是 Internationalization 这个英文的简写,因为International ...