最近在帮一位大哥做这样一个东西,要求支持1w个设备同时在线的TCP SERVER,这里可以做一下一些记录:
1、队列处理。
这点非常重要,当同一时间需要处理大量的请求,假设这时候需要操作到数据库。如果这时候数据库池连接数量不够,而需要请求数据库的操作或者需要操作数据库的地方很多,那么这时候可能程序就崩溃了。因为没有足够的数据库连接。
这时候就需要用到队列。
举个例子:
假设同一时间登录的用户有1000。
这是很就需要1000个数据库连接。但是我们给连接池配置的最大连接只有150个,如果不做队列处理,显而易见,这时候程序就会有问题了。
A:如果这时候做了队列处理,把所有需要登录的用户都放到队列中,从登录队列中取前50个登录用户进行操作。如果一旦有用户登录成功,则马上补上空余的登录位。
B:或者也可以这样子做:限定一个极限登录数量值50,放到全局量中,当用户登录的线程在进行登录操作前,验证此时在登录的用户数量是否已经达到极限登录数量值,如果已经达到极限登录数量值,那么则该用户需要等待有空余的登录位才能进行登录。
2、多线程处理结合队列做高频度操作的代理。
3、尽量每个访问线程尽量减少数据库操作和文件操作。做一些常用数据的缓存。
4、数据库连接一旦得到就不要轻易关闭。
5、常用的对象或者一些量尽量多做全局的访问池,放到池中。