亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WEB開發中。下載服務器上面的報表。怎么防止數據量過大導致超時的場景

WEB開發中。下載服務器上面的報表。怎么防止數據量過大導致超時的場景

躍然一笑 2019-04-19 15:59:27
問題需要服務端生成報表,由于數據量過大。往往會導致下載過程中504錯誤。下載流程已經最優化了。目前解決方案前臺點擊下載報表,發起一個異步請求。后臺處理完數據以后。把數據通過郵箱的方式發給下載者。有沒有其它更加好的辦法,可以解決這個問題?謝謝。
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

謝謝各位的回答。
這邊我自己總結了一下,根據我自己的實際情況主要
前臺異步提交一個請求,后臺進行異步組合報表。然后通過1.郵件的方式通知用戶2.通過定時器將消息PUSH給用戶,讓用戶去相應的地址上下載
查詢時間精確到秒。在用戶請求之前,先告訴用戶在這個時間段訂單個數。我們可以設定一個合理的值來提示用戶(改動最小)
采取任務的形式,前臺提交一個任務給后臺,后臺創建一個任務,并且存入數據庫。前臺可以每隔30s向后臺請求,獲取任務的狀態,以防止超時。相應的前臺有一個loading框(這里也可以改成將文件的生成過程放在服務端,然后這里給用戶返回的是一個連接,用戶可以直接點連接來下載文件)(這個類似使用AJAX的長連接模式)
把分析過程放在服務端。服務端起一個定時任務,隔段時間去分析這些數據。直接生產文件放在服務端??梢蕴峁┙o用戶一個下載列表直接提供給用戶下載
5.優化流程,采取dubbo批量數據請求。采取dubbo異步請求。多線程處理數據。多個dubbo服務合并(性能優化)
                            
查看完整回答
反對 回復 2019-04-19
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

最直接的辦法便是,壓縮數據(例如導出時進行壓縮),調整CGI超時時間。這其中,可以考慮節省CGI進程(因為即使輸出成果已經完成,按照題主的說明,fast_cgi的responsebuffer肯定是遠遠小于這次輸出的大小),在最后輸出的過程上用其他服務(例如直接用nginx)代勞。
其實,例如在問題中的這種從產品設計的角度解決問題在我看來最優解,實時下載真的是那么必要嗎?
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號