一台web服务器和一台db服务器可以两套系统装到一台服务器上吗?

一台web服务器和一台db服务器可以两套系统装到一台服务器上吗?,第1张

理论可以,但要考虑一些问题,像是性能问题,服务器的性能要可以承载瞬时高并发访问,内存充足,像是mysql一类的程序可能会因为内存占用过高而停止运行,像是安全问题,web服务通常是要对外开放的,如果没有web防火墙或者页面或服务器本身存在漏洞的话使服务遭到入侵,会影响数据库的安全。

其实这个问题最直接的回答就是可以,个人的网站出于资金问题可以放在一起,企业的话实在没有条件放在一起也行,但一定要做好安全防护,但如果有条件还是应该做到站库分离。插一句,站库分离一定要考虑好两台服务器之间的延时问题。

 多线程处理的优点
同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:
多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。
当前没有进行处理的任务可以将处理器时间让给其他任务。
占用大量处理时间的任务可以定期将处理器时间让给其他任务。
可以随时停止任务。
可以分别设置各个任务的优先级以优化性能。
是否需要创建多线程应用程序取决于多个因素。在以下情况下,最适合采用多线程处理:
耗时或大量占用处理器的任务阻塞用户界面 *** 作。
各个任务必须等待外部资源(如远程文件或 Internet 连接)。
例如,用于跟踪 Web 页上的链接并下载满足特定条件的文件的 Internet 应用程序“robot”。这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。多线程方法比同步方法的效率高很多,因为即使在某些线程中远程 Web 服务器的响应非常慢,也可以下载文件。
>服务程序最为关键的设计是并发服务模型,当前有以下几种典型的模型:
- 单进程服务,使用非阻塞IO
使用一个进程服务多个客户,通常与客户通信的套接字设置为非阻塞的,阻塞只发生在select()、poll()、epoll_wait()等系统调用上面。这是一种行之有效的单进程状态机式服务方式,已被广泛采用。
缺点是它无法利用SMP(对称多处理器)的优势,除非启动多个进程。此外,它尝试就绪的IO文件描述符后,立即从系统调用返回,这会导致大量的系统调用发生,尤其是在较慢的字节传输时。
select()本身的实现也是有局限的:能打开的文件描述符最多不能超过FD_SETSIZE,很容易耗尽;每次从select()返回的描述符组中扫描就绪的描述符需要时间,如果就绪的描述符在末尾时更是如此(epoll特别彻底修复了这个问题)。
- 多进程服务,使用阻塞IO
也称作 accept/fork 模型,每当有客户连线时产生一个新的进程为之服务。这种方式有时是必要的,比如可以通过 *** 作系统获得良好的内存保护,可以以不同的用户身份运行程序,可以让服务运行在不同的目录下面。但是它的缺点也很明显:进程比较占资源,进程切换开销太大,共享某些信息比较麻烦。Apache 13就使用了这种模型,MaxClients数很容易就可以达到。
- 多线程服务,使用阻塞IO
也称之 accept/pthread_create模型,有新客户来时创建一个服务线程而不是服务进程。这解决了多进程服务的一些问题,比如它占用资源少,信息共享方便。但是麻烦在于线程仍有可能消耗光,线程切换也需要开销。
- 混合服务方式
所谓的混合服务方式,以打破服务方和客户方之间严格的1:1关系。基本做法是:
新客户到来时创建新的工作线程,当该工作线程检测到网络IO会有延迟时停止处理过程,返回给Server一个延迟处理状态,同时告诉 Server被延迟的文件描述符,延迟超时时间。Server会在合适的时候返回工作线程继续处理。注意这里的工作线程不是通过 pthread_create()创建的,而是被包装在专门用于处理延迟工作的函数里。
这里还有一个问题,工作线程如何检测网络IO会有延迟?方法有很多,比如设置较短的超时时间调用poll(),或者甚至使用非阻塞IO。如果是套接字,可以设置SO_RCVTIMEO和SO_SNDTIMEO选项,这样更有效率。
除了延迟线程,Server还应提供了未完成线程的支持。
如有有特别耗费时间的 *** 作,你可以在完成部分工作后停止处理,返回给Server一个未完成状态。这样Server会检查工作队列是否有别的线程,如果有则让它们运行,否则让该工作线程继续处理,这可以防止某些线程挨饿。
典型的一个混合服务模型开源实现ServerKit
Serverkit的这些线程支持功能可简化我们的服务程序设计,效率上应该也是有保证的。
2 队列(queue)
ServerKit提供的队列是一个单向链表,队列的存取是原子 *** 作,如果只有一个执行单元建议不要用,因为原子 *** 作的开销较大。
3 堆(heap)
malloc()分配内存有一定的局限,比如在多线程的环境里,需要序列化内存分配 *** 作。ServerKit提供的堆管理函数,可快速分配内存,可有效减少分配内存的序列化 *** 作,堆的大小可动态增长,堆有引用计数,这些特征比较适合多线程环境。目前ServerKit堆的最大局限是分配单元必须是固定大小。
4 日志记录
日志被保存在队列,有一个专门的线程处理队列中的日志记录:它或者调用syslog()写进系统日志,或者通过UDP直接写到远程机器。后者更有效。
5 读写锁
GNU libc也在pthreads库里实现了读写锁,如果定义了__USE_UNIX98就可以使用。不过ServerKit还提供了读写锁互相转换的函数,这使得锁的应用更为d性。比如拥有读锁的若干个线程对同一个hash表进行检索,其中一个线程检索到了数据,此时需要修改它,一种办法是获取写锁,但这会导致释放读锁和获取写锁之间存在时间窗,另一种办法是使用ServerKit提供的函数把读锁转换成写锁,无疑这种方式更有效率。
除了以上这些功能,ServerKit还提供了数据库连接池的管理(当前只支持MySQL)和序列化(Sequences),如感兴趣可参见相关的API文档。
二、ServerKit服务模块编写
ServerKit由3部分组成:server程序,负责加载服务模块、解析配置文件、建立数据库连接池;libserver,动态链接库,提供所有功能的库支持,包括server本身也是调用这个库写的;API,编程接口,你编写的服务模块和ServerKit框架进行对话的接口。
ServerKit需要libConfuse解析配置文件,所以出了安装ServerKit,还需要安装libConfuse。关于libConfuse可参考 >50-100并发,如果是网站的话,数量就很少,用单路四核的配置就可以了。如果是做erp,oa软件之类的,至少得用双路四核SAS硬盘的才可以。
你可以看看国产品牌正睿的这款双路四核服务器。标配一颗至强E5506四核处理器,英特尔5500服务器芯片组主板,2G DDR3 REG ECC 1333MHz内存,SAS 300G 15000转/分钟企业级硬盘,双千兆网卡,性能可以说是非常不错。如果以后随着业务量的增长,觉得性能不够用了,还可以扩展到两颗处理器,达成8颗处理核心,最大支持24GB DDR3 REG ECC高速容错校验内存。
产品型号:I247789S-E
产品类型:双路四核塔式服务器
处 理 器:Xeon E5506
内 存:2G DDR3 REG ECC
硬 盘:SAS 300G
机 构:塔式
价 格:¥7999
购买即赠 《200元电子正睿券》
银牌服务
重庆五年免费上门服务,全国三年免费上门服务,关键部件三年以上免费质保。
给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门服务,在业界口碑很不错。

20000的并发量需要150台服务器。

150台。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。

如果是较大规模或者是,视频内容较多的网站,则会对服务器资源占用较高,推荐用双至强八核处理器,32G内存,1T硬盘的配置来放数据库,然后再用几台普通四核配置的机器放网站前端来做负载均衡即可,带宽需要根据你们的具体需求来决定。

易使用性:

服务器的功能相对于PC机来说复杂许多,不仅指其硬件配置,更多的是指其软件系统配置。服务器要实现如此多的功能,没有全面的软件支持是无法想象的。但是软件系统一多,又可能造成服务器的使用性能下降,管理人员无法有效 *** 纵。

所以许多服务器厂商在进行服务器的设计时,除了在服务器的可用性、稳定性等方面要充分考虑外,还必须在服务器的易使用性方面下足功夫。

服务器的易使用性主要体现在服务器是不是容易 *** 作,用户导航系统是不是完善,机箱设计是不是人性化,有没有关键恢复功能,是否有 *** 作系统备份,以及有没有足够的培训支持等方面。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13508359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存