問候堆垛機。如何設計和測試rails中的併發數據_lots_?
我們正在開展一個項目,爲心理實驗參與者存儲第二至第二個跟蹤數據。我們目前的設計有一個Flash客戶端,它收集60秒的時間戳/活動配對,然後將數據作爲字符串以及一些參與者元數據發佈到我們的rails(3.0.3)/ MySQL(5.1)應用程序。 編輯我們使用vanilla Passenger/Nginx作爲前臺。軌道分割時間戳/活動串爲平行陣列,產生一個單一的原料SQL插入語句,然後猛推一切成塊狀表,即: (簡化的代碼)
@feedback_data = params[:feedbackValues].split(",")
@feedback_times = params[:feedbackTimes].split(",")
inserts = []
base = "(" + @userid + "," + @studyid + ","
@feedback_data.each_with_index do |e,i|
record = base + @feedback_times[i].to_s + ","
record += "'" + @feedback_data[i].to_s + "')"
inserts.push(record)
end
sql = "INSERT INTO excitement_datas (participantId, studyId, timestamp, activityLevel) VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute sql
收率:
INSERT INTO STUDY_DATA (participantId, studyId, timestamp, activityLevel)
VALUES (3,5,2011-01-27 05:02:21,47),(3,5,2011-01-27 05:02:22,56),etc.
這個設計引起了很多關於團隊的爭論。研究將有10個或100個併發參與者。我已經爲每個客戶端錯開了60秒的POST時間間隔,以便傳入的數據分佈更均勻,但我仍然得到很多厄運和黯淡的預測。
我們還可以做什麼/我們應該如何改善此設計在rails中的可伸縮性?
我可以使用哪些工具/技術來準確預測這種情況在負載下的表現?
非常感謝。