Rails 4 - 如何跟踪用户的 activity 并且不使应用程序 + MySQL 数据库超载?
Rails 4 - how to track users' activity and don't overload the app + MySQL database?
我想实施一个跟踪系统来监控应用程序中用户的 activity。
该应用程序目前在工作时间内由大约 600-2000 名用户使用。
我本来想用一个before_filter
到ApplicationController
,每次用户点击一个link,我都会保存user/admin id等信息, params[:controller]
, params[:action]
和其他数据库操作参数。 (我知道像 audited
这样的宝石 - 但不确定我是否使用它们)。
但是我想知道当系统内的每次点击都将调用数据库以向其中插入一些数据时,我是否基本上不终止该应用程序。
我正在考虑使用后台方法 (sidekiq) 将操作记录到数据库中。
基本上:
class ApplicationController
before_filter :log_request
def log_request
RequestLogger.perform_async(params[:controller], params[:action], current_user.id)
end
end
class RequestLogger
include Sidekiq::Worker
def perform(controller, action, user_id)
# Save data to the database
end
end
或多或少。
我强烈建议您使用日志文件。轻松压缩,然后您可以批量处理整个日志文件。只需更新 Rails 以记录会话 ID,您就可以跟踪单个会话。
我想实施一个跟踪系统来监控应用程序中用户的 activity。 该应用程序目前在工作时间内由大约 600-2000 名用户使用。
我本来想用一个before_filter
到ApplicationController
,每次用户点击一个link,我都会保存user/admin id等信息, params[:controller]
, params[:action]
和其他数据库操作参数。 (我知道像 audited
这样的宝石 - 但不确定我是否使用它们)。
但是我想知道当系统内的每次点击都将调用数据库以向其中插入一些数据时,我是否基本上不终止该应用程序。
我正在考虑使用后台方法 (sidekiq) 将操作记录到数据库中。
基本上:
class ApplicationController
before_filter :log_request
def log_request
RequestLogger.perform_async(params[:controller], params[:action], current_user.id)
end
end
class RequestLogger
include Sidekiq::Worker
def perform(controller, action, user_id)
# Save data to the database
end
end
或多或少。
我强烈建议您使用日志文件。轻松压缩,然后您可以批量处理整个日志文件。只需更新 Rails 以记录会话 ID,您就可以跟踪单个会话。