代码之家  ›  专栏  ›  技术社区  ›  Paolo Broccardo

在MySQL备份期间,Railo网站无法连接

  •  0
  • Paolo Broccardo  · 技术社区  · 10 年前

    我每周为我的一个网站(ccms)的一个mysql数据库运行一次备份。此备份约为1.2GB,运行时间约为30分钟。

    当这个数据库备份运行时,我的所有其他railo网站都无法连接并在备份期间“关闭”。

    我发现的一个错误是:

    "[show] railo.runtime.exp.RequestTimeoutException: request (:119) is run into a
    timeout (1200 seconds) and has been stopped. open locks at this time (c:/railo/webapps/root/ccms/parsed/photo.view.cfm,
    c:/railo/webapps/root/ccms/parsed/profile.view.cfm, c:/railo/webapps/root/ccms/parsed/album.view.cfm,
    c:/railo/webapps/root/ccms/parsed/public.dologin.cfm)."
    

    我认为正在发生的是,这些页面(“ccms”网站)所需的表由于备份而被锁定,这是公平的。

    但是,为什么这会导致其他railo网站超时?例如,我在上面粘贴的错误实际上来自不同的网站,而不是它在错误中引用的“ccms”网站。我尝试运行的任何网站都会失败,并抛出一个引用“ccms”网站的错误,该网站是正在备份的网站。我如何避免这种情况?

    如有任何见解,将不胜感激。 谢谢

    1 回复  |  直到 10 年前
        1
  •  0
  •   barnyr    10 年前

    一种可能性是,因为超时时间似乎为20分钟,所以每次请求进入正在备份的站点时,线程都会阻塞等待DB的进程。

    Railo有一个工作线程池来处理请求,现在其中一个线程被占用了。随着请求的不断到来,对受影响站点的任何请求都会占用另一个线程。最终,池中不再有工作人员,所有后续请求都将排队等待工作人员可用后进行处理。

    我不是调试Railo的专家,但上面的内容对我来说似乎是合理的。您可以考虑为不同的站点运行不同的Railo进程,这将隔离它们或大幅降低您的DB超时(如果可以接受)。