linux下多线程开发时,c/s服务器,压力测试一下后线程都掉了,会是什么原因,但是主进程还在。我是要链接数据库的,怎么操作可以提高服务器处理速度


系统版本是Linux RH4U6 2.6.9-67.EL,用c语言写的,oracle10g数据库,我是预先开启了四个线程,压力测试大概一分钟左右,就只有主线程在,同时数据库 pro*c报告 -3114

Linux 多线程

yowkow 11 years, 11 months ago

对不起,首先我要对你提的问题质量表示否定,运行平台?编程语言?数据库类型?特别是“线程掉了”这个词,我可以理解为线程退出吧?

1.你的意思是用单线程处理网络连接速度比较慢,改用线程池的方式是吧?首先你这个“开发后台服务器处理比较慢“是哪儿的出的这个结论,如果是你已经进行过针对你的需求的压力测试我想你完全可以改用多线程的方式来处理。这种慢是针对并发量、IO bound、cpu bound而言的,否则你完全可以用”多路复用“机制来解决,在windows下还可以用完成端口。你要用线程池的方式无疑会增大你的编码复杂度(鉴于我从你提问的质量来看你应该是个新手)

2.对你提的“线程掉了”的问题做一下猜测,是线程退出吧?要是崩溃的的话另说,这样整个进程也就“掉”了。如果是线程退出的话我觉得应该和压力测试无关,估计是你的每个线程在接受连接后执行完逻辑就返回了,并没有做到循环执行。

3.数据库连接方式?看你用的何种数据库,何种语言,但有一点是一定的,用数据库连接池去操作数据库。

以上都是我的猜测,因为对你的问题感到模棱两可,推荐你看一篇文章 提问的智慧

JAPSEN answered 11 years, 11 months ago

Your Answer