java - POI导入单个包含百万级数据量的Excle如何设计
黄舟
黄舟 2017-04-17 14:00:50
0
4
388

需求

 通过WEB界面向数据库中
 不定期的全量导入一份包含百万级数据量的Excle表

现在应用在本机测试过程中,开发机内存16G,导入无压力
服务器部署后,远程web导入,页面假死,查看服务端进程已down
服务器配置:centos6.5 1核1g
JDK1.6
导入控件:poi
求小伙伴指导如何解决

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(4)
PHPzhong

1、先確認是上傳還是匯入時導致頁面假死。我推測應該是上傳,因為你的excel檔案應該不小,透過網路上傳需要花費大量的時間,有可能導致web伺服器超時設置,本地測試,上傳肯定要比網路快N倍。

2、如果不是上傳問題,那就是應該是導入資料庫出現問題,如果你是一條條的插入,那效率肯定不高,可以採用batch insert 或 load data infile 的方式。

巴扎黑

先debug一下,看看主要時間花在哪一步了,然後再針對做出最佳化。

左手右手慢动作

進程掛了,jstack不起作用了。
你可以遠端debug。
還有你的測試環境和線上環境差異太大,沒有參考價值。
建議拿一台和先上環境一致的測試機,並且遠端上傳excel來測試。

迷茫

如樓上所言,你需要先確定是哪一步導致伺服器宕機,
是上傳檔案太大伺服器記憶體溢位還是匯入的時候掛掉的.
如果伺服器沒有提供core dump供出錯分析的話,
自己在程式裡多印幾處log來確定崩潰的位置,
知道了掛掉的原因再針對性的處理比較好.
這種通常都是OOM導致的.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!