84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
需求
通过WEB界面向数据库中 不定期的全量导入一份包含百万级数据量的Excle表
现在应用在本机测试过程中,开发机内存16G,导入无压力 服务器部署后,远程web导入,页面假死,查看服务端进程已down 服务器配置:centos6.5 1核1g JDK1.6 导入控件:poi 求小伙伴指导如何解决
人生最曼妙的风景,竟是内心的淡定与从容!
1、首先确认是上传还是导入时导致页面假死。我推测应该是上传,因为你的excel文件应该不小,通过网络上传需要花费大量的时间,有可能导致web服务器超时设置,本地测试,上传肯定要比网络快N倍。
2、如果不是上传问题,那就是应该是导入数据库出现问题,如果你是一条条的插入,那效率肯定不高,可以采用batch insert 或者 load data infile 的方式。
先debug一下,看看主要时间花在哪一步了,然后再针对做出优化。
进程挂了,jstack不起作用了。 你可以远程debug。 还有你的测试环境和线上环境差异太大,不具备参考价值。 建议拿一台和先上环境一致的测试机,并且远程上传excel来测试。
如楼上所言,你需要先确定是哪一步导致服务器宕机, 是上传文件太大服务器内存溢出还是导入的时候挂掉的. 如果服务器没有提供core dump供出错分析的话, 自己在程序里多打印几处log来确定崩溃的位置, 知道了挂掉的原因再针对性的处理比较好. 这种通常都是OOM导致的.
1、首先确认是上传还是导入时导致页面假死。我推测应该是上传,因为你的excel文件应该不小,通过网络上传需要花费大量的时间,有可能导致web服务器超时设置,本地测试,上传肯定要比网络快N倍。
2、如果不是上传问题,那就是应该是导入数据库出现问题,如果你是一条条的插入,那效率肯定不高,可以采用batch insert 或者 load data infile 的方式。
先debug一下,看看主要时间花在哪一步了,然后再针对做出优化。
进程挂了,jstack不起作用了。
你可以远程debug。
还有你的测试环境和线上环境差异太大,不具备参考价值。
建议拿一台和先上环境一致的测试机,并且远程上传excel来测试。
如楼上所言,你需要先确定是哪一步导致服务器宕机,
是上传文件太大服务器内存溢出还是导入的时候挂掉的.
如果服务器没有提供core dump供出错分析的话,
自己在程序里多打印几处log来确定崩溃的位置,
知道了挂掉的原因再针对性的处理比较好.
这种通常都是OOM导致的.