Advantage和PHP-错误6303:超过最大Advantage数据库服务器连接数
我公司的php网站连接到Advantage数据库服务器,其中存储了所有必要的数据,如用户、密码和客户注册表 最近,我们开始在请求网页时出错: 警告:SQL错误:[扩展系统][Advantage SQL][ASA]错误6303:超出最大Advantage数据库服务器连接数。axServerConnect,SQL状态HY000在C:\…\www\。。。在线 这种情况一天比一天严重,可能一周发生一次或一天两次,而且没有明显的原因 当网站崩溃时,数据库服务与其他连接的应用程序仍能正常工作,恢复web服务的唯一方法是重新启动ApacheWeb服务器 在数据库服务器上,我们在C:\Windows文件夹中设置了ads.ini配置文件,在该文件夹中,我们使用“max_connections=1000”设置了最大连接数,这与我们的需要相比是非常大的 如果我们还设置了“RETRY\u ADS\u CONNECTS=1”,它会有用吗 我在2009年5月的一篇文章中发现了研发部门确认的一个bug: 这个问题解决了吗?在哪个版本 在哪里可以看到apache在db上打开的实际连接数 每个php页面关闭页脚上的广告连接,什么会导致连接超过 提前谢谢你的帮助 - 环境信息 数据库: Windows 2003 Server上的Advantage数据库服务器10.10.0.6 Web服务器: Windows XP pro上的Apache/2.0.59(Win32)mod_ssl/2.0.59 OpenSSL/0.9.8d PHP/4.4.7 在phpinfo()页面上,我们可以看到“Advantage Version”“8.00.0.0”。Advantage和PHP-错误6303:超过最大Advantage数据库服务器连接数,php,advantage-database-server,Php,Advantage Database Server,我公司的php网站连接到Advantage数据库服务器,其中存储了所有必要的数据,如用户、密码和客户注册表 最近,我们开始在请求网页时出错: 警告:SQL错误:[扩展系统][Advantage SQL][ASA]错误6303:超出最大Advantage数据库服务器连接数。axServerConnect,SQL状态HY000在C:\…\www\。。。在线 这种情况一天比一天严重,可能一周发生一次或一天两次,而且没有明显的原因 当网站崩溃时,数据库服务与其他连接的应用程序仍能正常工作,恢复web服务
为什么会这样?我们需要升级php advantage extension吗 有很多问题,但我会尽力解决每个问题 1) 6303错误。使用MAX_连接是解决此问题的正确方法。
确保[SETTINGS]部分中有MAX_CONNECTIONS 检查Apache/PHP/ADS驱动程序是否使用正确的ADS.ini文件。您可以使用Sysinternals中的Process Monitor查看成功打开的ads.ini文件。如果升级PHP驱动程序,可以设置环境变量adsini_path,以指向ads.ini所在的目录 2) 设置RETRY\u ADS\u connections=1将很有帮助。这也属于ads.ini的[设置]部分。当ADS客户端收到网络错误(通常为6000类错误)时,该错误由客户端驱动程序缓存,随后尝试连接时将使用缓存的错误而不是重试。设置RETRY_ADS_Connections将告诉ADS客户端忽略缓存错误并重试连接 3) Bug:看起来这是在9.10.0.9版本的驱动程序中根据上的发行说明修复的 修复了垃圾收集引用计数在 如果打开多个SQL语句,则连接将不正确 在上面 由于您运行的是10.1服务器,您可能会考虑更新到10.1客户端,该客户端也将包含修复程序 4) 查看连接的实际数量 我建议使用存储过程sp_mgGetConnectedUsers,您可以使用ARC(Advantage Data Architect),但它可能很难分组、排序等。 因为您使用的是10.1,所以可以在查询中包括存储过程的结果,例如
SELECT COUNT(*) FROM (EXECUTE PROCEDURE sp_mgGetConnectedUsers()) u WHERE ADDRESS='xxx.xxx.xxx.xxx'
您还可以使用其他字段来标识PHP应用程序,例如用户名(服务器名称)、字典(假设PHP应用程序使用唯一的用户)、ApplicationID
5) PHPINFO显示了Advantage PHP客户端驱动程序的Advantage版本。出于上述原因,您可能需要升级客户端驱动程序。应该与交换DLL文件(ace32.DLL、axces32.DLL、adsdbc.DLL和php_advantage.DLL)一样简单,但我建议先进行测试,以确保您获得所有信息。请再次帮助我们好吗?我安装了process monitor,但只看到了.dll文件而没有.ini-我应该在哪里更改MAX_连接数?您可以尝试将ads.ini放在php目录或windows或windows\system32文件夹中。如果升级了php驱动程序,可以设置系统环境变量adsini_path,以指向ads.ini所在的文件夹。