red hat server版比windows server贵,一般linux系统级漏洞这几年没见过,最多是你装的软件有问题,大多数新的技术都是基于linux,虽然过去我是写过windows内核驱动,但感觉windows这几年已经一年不如一年了,微软能保住桌面用户就可以了。 没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w 没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w https://www.redhat.com/apps/store/server/rhel.html#storeTabWrap http://download.microsoft.com/download/F/3/9/F39124F7-0177-463C-8A08-582463F96C9D/Windows_Server_2012_R2_Licensing_Datasheet.pdf 自己去看价格,然后再跟微软的报价比比,看看哪个贵。
red hat server版比windows server贵,一般linux系统级漏洞这几年没见过,最多是你装的软件有问题,大多数新的技术都是基于linux,虽然过去我是写过windows内核驱动,但感觉windows这几年已经一年不如一年了,微软能保住桌面用户就可以了。 没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w 没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w https://www.redhat.com/apps/store/server/rhel.html#storeTabWrap http://download.microsoft.com/download/F/3/9/F39124F7-0177-463C-8A08-582463F96C9D/Windows_Server_2012_R2_Licensing_Datasheet.pdf 自己去看价格,然后再跟微软的报价比比,看看哪个贵。 少年,你看下https://www.redhat.com/wapps/store/allProducts.htmlRed Hat Enterprise Linux for IBM System z Standard Subscription (1 year) $15,000USD Premium Subscription (1 year)$18,000USD2w刀了快,10几万RMB了吧, 这还不算其他组件。
windows server 、 red hat谁贵谁便宜,谁更nb,把口水吐完也没结果。我们这些程序猿都不写代码的时候,它们应该依然会一直存在,也一直都会有人会买。 大家还是聊聊技术性的东西,看了各位大神的讨论,对ClientContext的部分,觉得自己的工程里可以试着去改改。我是直接用的STL::list<ClientContext*>。这些实际工作的经验和想法,比windows server 、 red hat谁贵谁便宜,谁更nb有含量多了。
学习了!!
只是有一点,不理解:
搜索,都得要遍历所有的客户端Context,MAP为什么比 双连表快呢?
同意,因为服务器程序不是【商品】,不需要太多顾及太多运行环境,是自己用的,有时侯,简单,稳定,实用最好。
固定内存还可以发现不必要的BUG,内存泄漏。
当然,程序一启动,就占用个2GB内存也是不行的,在PC机上都不好调试了,
我准备分几个阶梯来申请新的内存,即在内存池管理时,超过标尺时,增加一大块新的内存池。
多个线程,对一个链表操作,如果要用表其中一个Node时,要把整个链表锁定,这样就会大大增加锁死的可能性,那样IOCP的最大优势【多个Worker线程】,可能会变得和单线程无异。
大部分高频率发生的对单个Node操作,来自于IOCP完成事件,即WorkerThreads,而我上面说过了,是投放单个IO,每次事件来,直接操作单个Node,即与整个链表无关,也不存在多个任务对Node同起访问的问题。管理链表时,需要遍历整个链表,也不要让它锁定整个链表,也就是不要妨碍到高频的IO事件对Nodes的操作,所以,头一个锁,尾一个锁,然后,你懂了吧。。
这句话不是很客观,为什么主流的分布式要用linux,因为它开源,一整套(如apache,nginx等)都开源。
为什么不用windows,因为它不开源,一套服务器操作系统就要不少钱了,在买几个配套软件,可想而知。如果你有足够的money,windows平台下,也可以搭建一套很不错的分布式系统。而且管理起来至少比linux要方便。
epoll没有写过,但有了解,当初也有想过选择Linux,选择可能还是跟多年的MS奴隶经验有关,
不是说VC王者归来吗,何必王者不当,去Linux那边重新摸索呢您说的【主流的分布式技术】完败Windows,是否能拿出点证据?我认为:
1. Windows服务器的内核,无疑能更大的发挥出新的服务器硬件的最佳性能,MS是一个商业性的公司,而这新的硬件的支持,需要一个公司来快速跟上。2、Windows用户基础,根深蒂固,管理成本也低很多。3. 网络瓶颈,RAM瓶颈,存储设备瓶颈,
都可以用扩充,或其它的架构,缓冲等方法来弥补,
而CPU处理瓶颈是最不好解决的,例如8个CPU核处理10万个SOCKET,就是需要IOCP这种东西,用与CPU个数相仿的线程数量,操作系统切换减少,能发挥出最大的CPU处理性能,接下来,我们要做的事情,就是怎样让这8个线程满负荷地工作了,我自己也写单片机操作系统,我很认同IOCP这种架构。
在Linux上,我相信有高手能做到,是熟悉Linux脾气与性能的人,但就算做到了,我也会认为,这活儿太难,太没意义了。4. 说到稳定性,没见过服务器OS死的,只有自己的程序死,说到底,还是自己的问题。5. 要说到【钱】上,你租Linux服务器还不得出钱?当然,如果懂得使用Linux这把刀,那更好!!我是不会。
这句话不是很客观,为什么主流的分布式要用linux,因为它开源,一整套(如apache,nginx等)都开源。
为什么不用windows,因为它不开源,一套服务器操作系统就要不少钱了,在买几个配套软件,可想而知。如果你有足够的money,windows平台下,也可以搭建一套很不错的分布式系统。而且管理起来至少比linux要方便。流量大的网站或游戏服务器没有几个用windows服务器吧,windows服务器管理起来太麻烦了,那补丁打的蛋都碎了,经常重启server这对于目前的nosql类的服务器是灾难性的麻烦
2. 还是成本。试想,你要开一个小公司,要部署一个服务器,你是花钱买windows server,还是装个red hat?
从成本考虑,假设你选择了red hat,那么你在上面开发程序,跑服务器。
一步一步的,你的公司变大了,你会在花大价钱来废掉之前的代码,在windows上重写一遍么?
所以,继续使用red hat。不要说什么补丁不补丁的,linux下就没有补丁了?
记得早些年有个内核漏洞,能够获取shell 的root权限,这个也不算小问题吧?
linux下更新一个补丁,有时还需要重新编译内核的多了去了,这个不是“蛋碎”的理由当然,这里并不是说linux不好,或者windows好之类的。
我想表达的是,只选对的,不选贵的。
究其原因,可能有以下几个原因:
1. 成本
2. 源于传统思想,linux比windows "更"稳定。
3. windows吃硬件,linux在任何破旧的机器上都能跑。
4. 跟风+装B。
我是做基于linux内核的。
目前我做的产品是基于X86架构的网络防火墙
都是c++ 模块化设计,到时候真出问题了,出一块换一块,换好为止
,--
我自己之前写的一个iocp,不依赖任何库,就想楼主说的那样,
c/s一台机器上,s投递5w wsaaccept,客户端并发连接,基本上cpu20-30%左右,内存占比总的好像,在1g左右(有一个内存管理器,应该是有很大没用的内存被保留了),
时间隔个把月了,忘记了,
最后有望达到10w,可是郁闷的是出问题了,2w都打不到了,还死机,哪怕服务器关了,过不了多久还是死机了,我估计资源耗尽了,电脑没有蓝屏,就那样直接死了。这几天做其他服务器,突然发现线程锁的一个问题,回想一下,我擦,10有89,我那个服务器就是被锁死的,而且内存管理也是非常麻烦的,可能我设计的有问题
--
做服务器最怕锁了, 我觉得
red hat server版比windows server贵,一般linux系统级漏洞这几年没见过,最多是你装的软件有问题,大多数新的技术都是基于linux,虽然过去我是写过windows内核驱动,但感觉windows这几年已经一年不如一年了,微软能保住桌面用户就可以了。
还有既然都IOCP了,为什么LOG也不IOCP呢,这样LOG写入也不会阻塞线程.
没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w
求楼上各位大神给些学IOCP的资料,入门的,进阶的,都可以,谢了
不明白,是怎样实现?请细说下!
同楼主,只会Window,Linux玩不转
这句话不是很客观,为什么主流的分布式要用linux,因为它开源,一整套(如apache,nginx等)都开源。
为什么不用windows,因为它不开源,一套服务器操作系统就要不少钱了,在买几个配套软件,可想而知。如果你有足够的money,windows平台下,也可以搭建一套很不错的分布式系统。而且管理起来至少比linux要方便。支持。用linux的多半是出于资金上的考虑,至于性能或者稳定性,个人觉得都是鬼扯,从Win NT起,就已经够稳定了,性能至少桌面系统Win是完胜的,服务器上没有比较,不好说。
red hat server版比windows server贵,一般linux系统级漏洞这几年没见过,最多是你装的软件有问题,大多数新的技术都是基于linux,虽然过去我是写过windows内核驱动,但感觉windows这几年已经一年不如一年了,微软能保住桌面用户就可以了。
没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w
没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w
https://www.redhat.com/apps/store/server/rhel.html#storeTabWrap
http://download.microsoft.com/download/F/3/9/F39124F7-0177-463C-8A08-582463F96C9D/Windows_Server_2012_R2_Licensing_Datasheet.pdf
自己去看价格,然后再跟微软的报价比比,看看哪个贵。
这句话不是很客观,为什么主流的分布式要用linux,因为它开源,一整套(如apache,nginx等)都开源。
为什么不用windows,因为它不开源,一套服务器操作系统就要不少钱了,在买几个配套软件,可想而知。如果你有足够的money,windows平台下,也可以搭建一套很不错的分布式系统。而且管理起来至少比linux要方便。流量大的网站或游戏服务器没有几个用windows服务器吧,windows服务器管理起来太麻烦了,那补丁打的蛋都碎了,经常重启server这对于目前的nosql类的服务器是灾难性的麻烦你真以为生产服务器是一有补丁就立马打上?知道Patch Window不?另外,别人没有备份服务器,没有负载均衡?
用window一样可以做到服务0中断,当然代价可能比linux大。但是维护的成本只怕比linux要低得多。
red hat server版比windows server贵,一般linux系统级漏洞这几年没见过,最多是你装的软件有问题,大多数新的技术都是基于linux,虽然过去我是写过windows内核驱动,但感觉windows这几年已经一年不如一年了,微软能保住桌面用户就可以了。
没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w
没有序列号装不了Red Hat Enterprise Linux吧,有版权的,开源不等于免费啊。你查查,上次买的公司花了6w多,要是包含JBoss之类的,你30万也那不下来吧,windows server最多3w
https://www.redhat.com/apps/store/server/rhel.html#storeTabWrap
http://download.microsoft.com/download/F/3/9/F39124F7-0177-463C-8A08-582463F96C9D/Windows_Server_2012_R2_Licensing_Datasheet.pdf
自己去看价格,然后再跟微软的报价比比,看看哪个贵。
少年,你看下https://www.redhat.com/wapps/store/allProducts.htmlRed Hat Enterprise Linux for IBM System z
Standard Subscription (1 year) $15,000USD
Premium Subscription (1 year)$18,000USD2w刀了快,10几万RMB了吧, 这还不算其他组件。
这句话不是很客观,为什么主流的分布式要用linux,因为它开源,一整套(如apache,nginx等)都开源。
为什么不用windows,因为它不开源,一套服务器操作系统就要不少钱了,在买几个配套软件,可想而知。如果你有足够的money,windows平台下,也可以搭建一套很不错的分布式系统。而且管理起来至少比linux要方便。流量大的网站或游戏服务器没有几个用windows服务器吧,windows服务器管理起来太麻烦了,那补丁打的蛋都碎了,经常重启server这对于目前的nosql类的服务器是灾难性的麻烦你真以为生产服务器是一有补丁就立马打上?知道Patch Window不?另外,别人没有备份服务器,没有负载均衡?
用window一样可以做到服务0中断,当然代价可能比linux大。但是维护的成本只怕比linux要低得多。遇到0day时你还等patch吗,很多漏洞windows都没有补丁的,不开源很危险的。你见过google或apple的server跑windows server吗,它们真的不差钱。windows这种全靠微软的系统,很危险啊,微软管不过来时你就是肉鸡啊。
不明白,是怎样实现?请细说下!不至于writefile 有异步重叠模式都不知道吧,异步写文件是不会阻塞的,且这样就基本不存丢失缓存LOG的问题,在频繁写LOG时会多用一些CPU时间而也,但log数据写入的可靠性要高得多
大家还是聊聊技术性的东西,看了各位大神的讨论,对ClientContext的部分,觉得自己的工程里可以试着去改改。我是直接用的STL::list<ClientContext*>。这些实际工作的经验和想法,比windows server 、 red hat谁贵谁便宜,谁更nb有含量多了。
好奇各位都是怎么做的?
不明白,是怎样实现?请细说下!不至于writefile 有异步重叠模式都不知道吧,异步写文件是不会阻塞的,且这样就基本不存丢失缓存LOG的问题,在频繁写LOG时会多用一些CPU时间而也,但log数据写入的可靠性要高得多你有试验过异步WriteFile崩溃后,还是会写完内容吗?
异步操作很复杂,需要有一个Overlap实例传入并传出,如果狂写入,怎样开销这些资源?在heap中?完成了再free?那估计一个Log()要花上50ms吧(在我的电脑上)。那还不如同步写入,本身操作系统、磁盘硬件也会有自己的缓冲,但是频度不是自己可以控制的。Log只是一个小小的配角,不想让它去频繁地操作磁盘,当然你说的实时记录,更安全。
当然,看你的选择了,把Log作为查看网络安全与特殊事件,还是找到进程崩溃Bug的救命稻草。我实现这个环形Buffer,一举三得:
1、批量写操作,减少磁盘的负担。
2、让写Log()返回的时间最短。(比调用那个异步WriteFile还要短很多),多个线程写入达到最快速。
3、在GUI上需要Monitor时,滚动显示达到最快速,这个也是很费时的操作,
我用的是Edit控件,目前我只知道这个方法,SetWindowText(),不可能把巨长Text刷新,那样会巨慢,而拥有自己的Buffer后,你可以手动刷新,或定时刷新,只需要指定最未端的文本来SetWindowText()显示,来减少CPU资源的耗费,不要小看这个。当然,如果有更好的解决方案Monitor Log,请指点!
我是【批量申请】,不足时,增加一批。
【一次申请一个】Heap会有很多碎片,效率会低很多,而且还会产生一些浪费。大神们继续。
94,94!
STL List,我觉得会比自己定的List慢一些,而且在操作锁的时候比较不合用,还是 指针List,不是实例List。
用实例List,初始化,新增插入时都会产生一些额外不必要的工作,所以,还是用C语言吧。
不明白,是怎样实现?请细说下!不至于writefile 有异步重叠模式都不知道吧,异步写文件是不会阻塞的,且这样就基本不存丢失缓存LOG的问题,在频繁写LOG时会多用一些CPU时间而也,但log数据写入的可靠性要高得多你有试验过异步WriteFile崩溃后,还是会写完内容吗?
异步操作很复杂,需要有一个Overlap实例传入并传出,如果狂写入,怎样开销这些资源?在heap中?完成了再free?那估计一个Log()要花上50ms吧(在我的电脑上)。那还不如同步写入,本身操作系统、磁盘硬件也会有自己的缓冲,但是频度不是自己可以控制的。Log只是一个小小的配角,不想让它去频繁地操作磁盘,当然你说的实时记录,更安全。
当然,看你的选择了,把Log作为查看网络安全与特殊事件,还是找到进程崩溃Bug的救命稻草。我实现这个环形Buffer,一举三得:
1、批量写操作,减少磁盘的负担。
2、让写Log()返回的时间最短。(比调用那个异步WriteFile还要短很多),多个线程写入达到最快速。
3、在GUI上需要Monitor时,滚动显示达到最快速,这个也是很费时的操作,
我用的是Edit控件,目前我只知道这个方法,SetWindowText(),不可能把巨长Text刷新,那样会巨慢,而拥有自己的Buffer后,你可以手动刷新,或定时刷新,只需要指定最未端的文本来SetWindowText()显示,来减少CPU资源的耗费,不要小看这个。当然,如果有更好的解决方案Monitor Log,请指点!
异步写文件不复杂,比如写LOG,Overlap只是传个指针,也不需要等待完成端口的完成通知,这是关键,只要写入就完事(应该是在ns级别,不可能支ms级别),也就是说不需要把文件句柄和IOCP关联.