当两个事务打开时(使用FireDac组件和FireBird dbms),如何防止Delphi引发异常?

当两个事务打开时(使用FireDac组件和FireBird dbms),如何防止Delphi引发异常?,delphi,firebird,firedac,Delphi,Firebird,Firedac,我使用FireDac和HTTPServer组件用Delphi构建了一个Web API:该应用程序使用firebird支持的dbms 在我开始模拟对同一API端点的多个请求之前,一切都正常工作。这会导致内部服务器异常,报告在已打开事务时正在打开第二个事务 我知道所有连接在使用后都会被关闭,对象也会被销毁以防止内存泄漏,但我不明白为什么应用程序会触发异常 任何可能促使我找到解决方案的帮助或问题?HTTP服务器将同时处理多个请求 因此,如果两个客户端试图同时访问同一资源(URL),服务器将需要两组数据

我使用FireDac和HTTPServer组件用Delphi构建了一个Web API:该应用程序使用firebird支持的dbms

在我开始模拟对同一API端点的多个请求之前,一切都正常工作。这会导致内部服务器异常,报告在已打开事务时正在打开第二个事务

我知道所有连接在使用后都会被关闭,对象也会被销毁以防止内存泄漏,但我不明白为什么应用程序会触发异常


任何可能促使我找到解决方案的帮助或问题?

HTTP服务器将同时处理多个请求

因此,如果两个客户端试图同时访问同一资源(URL),服务器将需要两组数据库连接和数据访问组件

如果您的应用程序使用不同的对象(每个客户端一个对象集),并且以线程安全的方式执行此操作,则两个连接都应该可以正常工作

但是,如果只使用一个数据模块来服务所有传入的HTTP请求,则需要进行适当的序列化。使用后关闭连接没有帮助,每次只能从一个线程使用连接


因此,要了解错误的潜在原因,需要更多有关服务器实际设计的信息。

HTTP服务器将同时处理多个请求

因此,如果两个客户端试图同时访问同一资源(URL),服务器将需要两组数据库连接和数据访问组件

如果您的应用程序使用不同的对象(每个客户端一个对象集),并且以线程安全的方式执行此操作,则两个连接都应该可以正常工作

但是,如果只使用一个数据模块来服务所有传入的HTTP请求,则需要进行适当的序列化。使用后关闭连接没有帮助,每次只能从一个线程使用连接


因此,为了理解错误的潜在原因,需要更多关于服务器实际设计的信息。

请包括一些代码和您收到的实际错误请包括一些代码和您收到的实际错误我想我的问题在您的第二段。我将尝试创建单独的连接,但如果数据库不是本地的,恐怕会影响性能。我稍后会回来提供更多信息。感谢@mjn关注性能问题。您可以阅读经典vs超级服务器文章(谷歌提供)。您可以使用它来优化此任务。我认为我的问题在您的第二段中。我将尝试创建单独的连接,但如果数据库不是本地的,恐怕会影响性能。我稍后会回来提供更多信息。感谢@mjn关注性能问题。您可以阅读经典vs超级服务器文章(谷歌提供)。您可以使用优化此任务。