生产者消费者算法之多线程操作数据库速度提升

来源:互联网 发布:什么是.net编程 编辑:程序博客网 时间:2024/06/06 02:28

背景:通过客户反映我们的系统在字串上库时需要花费的时间在3~4小时以上,然而我们在测试环境上测试通常百万级的数据量大概只需要十几分钟就可以搞定,但是到了我们的正式环境上却要花费很长的时间。


探索:1.我们在正是环境和测试环境做了大量的测试,通过正式环境与正式环境数据上库对比之后发现,我们的测试环境确实比我们的正式环境速度快几十倍,甚至我们的正式环境有可能会出现线程堵塞的情况

    2.我们通过用同样的代码同样的数据库去比较数据,最终在比较之后发现我们正式环境和测试环境的速度任然是相差差很大

    3.最后我们通过比对我们服务器的硬件数据,发现我们两台服务器的硬件几乎差不多,相比之下我们的正是环境还要好很多

    4.最后在不经意间发现我们的mysql数据库启动跟我们一般安装的mysql数据库启动还不一样,正是环境的数据库是装在本机的,按理来说这种做法是不对的,最后通过测试数据比对之确实是数据库启动方式有问题,正是环境的数据库不是通过服务启动的,是通过进程启动。


改进:最后我们换了一台内存64G硬盘2.5T的服务器,加上域名解析我们的服务器跑起来溜溜的。


问题:1.同时并发跑32个线程JDK总是包内存溢出?

       换成最新的JDK 跑起来溜溜的。

    2.以前的catalina内存配置的是4G,还是很慢?

     换成65G内存,配置catalina20G内存跑起来溜溜的。

展望:还是希望以后能优化代码,换一个效率更高的算法