这次项目是采用连接池连接数据库,整个项目中只有一个数据库连接对象,且不释放(防止高频率访问,多次创建数据连接对象),项目部署到服务器上发布测试时,
问题:
1.开始项目测试开始时,可以连接数据库,后来隔一天后测试就不能连接上数据库了,但从新部署项目到服务器上,又可以连接数据了
原因:
开始以为是测试项目存在错误,错误遗留在服务器上,致使服务器不能运行
后来发现是mysql数据库底层的连接池生成的数据库对象有有效期限制,生存期为8小时
解决方案:
让自己编写的数据池代码生成数据库连接对象时,增加一个自动刷新的功能,隔断时间自动生成一个新的数据库连接对象
拓展:
1.用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。
2.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个