我正在使用一个聊天服务器,该服务器使用MySQL数据库进行用户登录和身份验证(消息保存在内存中,并且仅在关闭和启动时保存到数据库或从数据库加载)。每个聊天室都是作为一个单独的进程实现的,这样,如果一个聊天室发生故障,整个服务器就不会死机。当用户连接时,每次他发布消息时,会议室服务器进程都会从数据库中读取他的身份验证信息。需要对每条消息进行重新认证,以防止同一用户进行多次会话。假设消息以合理的速率发布(每个用户每隔5-10秒发送一条消息),房间服务器在服务器的整个生命周期内维持持久的MySQL连接,或服务器连接是否更有效率,提出要求,并断开连接?如果房间可能一次闲置几天(没有消息),答案是否会改变?最后,如果MySQL服务器运行在相同的硬件上而不是网络上的其他机器上,答案是否会改变?
答案 0 :(得分:0)
建立连接可能是一件昂贵的事情 - 从网络角度以及对数据库的身份验证。我已经将网站从打开/关闭的单个连接移动到连接池,并且看到了巨大的性能提升(如果我记得的话,> = 20%)。
绝对是要走的路。