[問題] api連資料庫的問題消失

看板java作者時間7年前 (2018/07/08 21:05), 編輯推噓3(3016)
留言19則, 4人參與, 最新討論串1/1
目前我用servlet寫了一個api 類似/api/getinfo?para=X 但是目前遇到一個問題 因為資料庫允許session連線數大概最多500而已 但可能有同時讀取這個api 30000次(1秒內有30000次的呼叫) (這邊計算的方式不知道有沒有算錯 我的算法是假設X是1~10000 那用POST呼叫 POST 127.0.0.1/api/getinfo?para=1 POST 127.0.0.1/api/getinfo?para=2 ............. POST 127.0.0.1/api/getinfo?para=10000 這樣算呼叫10000次吧? ) 但這會造成把這個資料庫塞滿 後面的API都讀取不到內容 如果我用同步的方式 是可以的 但讀取api時間又過久 (一分鐘只完成18個thread的讀取) 不知道有沒有什麼好方法 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.28.199 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1531055106.A.EDE.html

07/08 21:20, , 1F
這是架構的問題吧 先不考慮資料庫 同時1萬筆網路 可以算ddos
07/08 21:20, 1F

07/08 21:22, , 2F
先讓consumer 和producer 分離吧
07/08 21:22, 2F

07/08 22:26, , 3F
J大請問是什麼意思
07/08 22:26, 3F

07/08 22:27, , 4F
那如果來源都是同一個IP tomcat會算同個thread還是不算
07/08 22:27, 4F

07/08 23:41, , 5F
你的API做什麼事做完不放掉CONNECTION?
07/08 23:41, 5F

07/08 23:42, , 6F
查的資料異動不大的話打個CACHE在中間擋吧
07/08 23:42, 6F

07/09 07:52, , 7F
做完有放掉 但是因為同時10000個進來 造成資料庫連線直
07/09 07:52, 7F

07/09 07:53, , 8F
暴增到一萬 如果是非同時 做完關掉 後面的再進就不會有
07/09 07:53, 8F

07/09 07:53, , 9F
問題了
07/09 07:53, 9F

07/09 07:54, , 10F
cache 是只放在資料庫還是程式?
07/09 07:54, 10F

07/09 09:12, , 11F
資料庫通常會用connection pool,設定上限,不會同時開一萬
07/09 09:12, 11F

07/10 18:48, , 12F
連線和資料處理沒分離 採取串聯的方式
07/10 18:48, 12F

07/10 18:49, , 13F
只要其中一個慢 整個都會慢
07/10 18:49, 13F

07/10 18:52, , 14F
不知道系統限制是什麼 若能直接用procedure解決 10萬筆算小咖
07/10 18:52, 14F

07/10 18:54, , 15F
不能用procedure 就看client是不是要即時回應結果
07/10 18:54, 15F

07/10 18:55, , 16F
若是client要知道結果 可以分析是否可以先給局部結果
07/10 18:55, 16F

07/10 18:57, , 17F
這樣分析就可以知道接下來要怎麼加速這個系統了
07/10 18:57, 17F

07/10 18:59, , 18F
舉一個例子 若可以使用mq 資訊可以在queue中排隊
07/10 18:59, 18F

07/10 19:00, , 19F
資料的處理只剩下程式碼的優化 或加開伺服器
07/10 19:00, 19F
文章代碼(AID): #1RGWm2xU (java)