占用3306端口过多,导致数据库连接出错

问题描述

我连接mysql数据库,占用3306端口程序和数据库都在本地,一次连接本地的一个端口就占用一个3306,当连接关闭以后这个端口为time_wait状态,在这个状态下4分钟之内没有新的连接才释放这个端口,但我的程序是死循环读写数据库的,所以几个小时以后可能会占满6万多个端口随后就会出现数据库连接出错的情况。端口占用的太多这种情况应该怎么处理。在数据库连接中的代码我都是正常关闭并销毁了连接对象。有没有知道的麻烦告诉小弟一下

解决方案

解决方案二:
把你的connection,写成单例,或者静态
解决方案三:
拜托,3306是数据库侦听的端口,跟你客户端占用的端口根本不是同一个端口你并不是"占用一个3306",而是占用一个未被占用的端口如果数据库连接正常释放的话,这个端口应该也会随即释放,不会一直占用的.到底端口是否被占用,可以写个socket通信程序测试,看端口是否被占用.不要盲目怀疑
解决方案四:
.Net中的连接用完dispose后,只是将其放回连接池,除非这时候已经开启了很多的物理连接(socket)才会马上释放死循环读可以考虑优化,将某些连接合并到次连接中完成,比如同一个conn和cmd,查完后,重新设置sql和params又或者用存储过程同时加大默认的PoolSize
解决方案五:
另外,即使是死循环读,你也应该加个sleep每秒访问好几百次是没有任何意义的
解决方案六:
应该不会这样子吧,是不是没有及时释放连接呢
解决方案七:
是你没有释放资源吧,链接完了之后都要释放一下资源
解决方案八:
单例、sqlconnection字段保留、下次查询数据库就用这个保留的字段、不要新建数据库的连接了、很浪费资源的
解决方案九:
3306端口只会占用一次,客户端连接的端口是占用的其他可用端口连接到3306端口瞬间占用6万多端口的话,肯定会出错的,端口数量加上保留的所有端口最大数是65536你死循环的查询数据库为什么把实例化的连接放到循环里啊?绝对不能那么做,这样必定造成连接数过多。一定要只实例化一个链接对象,就是就做一次连接,只循环查询就可以了。楼主这可是非常严重的逻辑错误啊

时间: 2024-10-02 09:33:11

占用3306端口过多,导致数据库连接出错的相关文章

Skype占用80端口导致Apache启动不了

近日发现Apache无故启动失败,检查log也无果,通过manual启动提示以下错误: (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次.: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs 这是由于80端口被占用了,把占用80端口的进程停掉就可以了. 如何查看那个进程占用了80端口呢? 开始

如何分析php-cgi进程占用cpu资源过多负载高的原因

  服务器环境:redhat linux 5.5 , nginx , phpfastcgi 在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢,所遇到的php-cgi进程占用cpu资源过多的原因有: 一些php的扩展与php版本兼容存在问题:实践证明 eAccelerater与某些php版本兼容存在问题,具体表现是启动php-cgi进程后,运行10多分钟,奇慢无比,但静态资源访问很快,服务器负载也很正常(说明nginx没有问题,而是ph

关于IIS配置已有项目问题之数据库连接出错,请检查Conn.asp文件中的数据库参数设置

问题描述 关于IIS配置已有项目问题之数据库连接出错,请检查Conn.asp文件中的数据库参数设置 百度上主流方法都试过,包括父路径,32位开启,设置A USER权限,设置Everyone权限.以下是Conn.asp文件内容:<%Dim SqlNowStringDataPart_DDataPart_YDataPart_HDataPart_SDataPart_WDataPart_MCurrentPageDim ConnDBPathCollectDBPathDataServerDataUserDat

查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程

利用快捷键win+R键打开运行窗口.输入cmd回车打开命令提示符窗口 1:查看本机开放的端口,即已被占用的端口号.命令:netstat -an 部分结果列表:Proto  Local Address          Foreign Address        StateTCP    0.0.0.0:135            0.0.0.0:0             LISTENINGTCP    0.0.0.0:3473           0.0.0.0:0            

绝大多数人没玩过也没见过的现象:20个MYSQL进程共用1个3306端口

各位客官听我讲,事情的过程是这样的:        10年前,公司有一个中型网站,服务器托管在IDC机房.网站是一拨老技术搞的,后来网站不商业运营了,老技术都离职,现已渺然于网络中.但网站还是要继续技术性维护(就是能打开),后来转到我手来维护.我嫌IDC机房繁琐不方便,把网站从IDC机房转到了阿里云.        转移到阿里云和部署都正常,但是部署完成后,发现一个问题,性能很低,MYSQL经常卡死,没道理啊.云服务器比以前的IDC服务器配置好很多,还用的是SSD硬盘,整个WEB和MYSQL配置

解决Linux下php-fpm进程过多导致内存耗尽问题

最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是决心开始解决问题,解放我的时间和精力(我可不想经常出问题,然后人工重启,费力费时). 分析问题 发现问题以后,首先使用 free -m 指令查看当前服务器执行状况: 可以看到我的服务器内存是2G的,但是目前可用内存只剩下70M,内存使用率高达92%,很有可能是内存使用率过高导致数据库服务挂断. 继续看详细情况,使用 top 指令: 然后再看指令输出结果中详细列出的进程情况,重点关注第10列内存使用

解决pow占用80端口的问题

解决pow占用80端口的问题 安装完pow 之后,每次开机都自动启动,占用了80端口,并且杀死进程之后,又会马上启动. 如何解决呢? 是因为pow 在系统的Agent中 解决方法: cd /Library/LaunchDaemons/ mv cx.pow.firewall.plist cx.pow.firewall.plist.bak

看紧你的3306端口,一次通过mysql的入侵

mysql 用superscan扫了一下某个c类的网段,寻找开放80端口的机器,结果就只有一台机器开放了80端口,试着连了一下,是我们学校某个社团的的主页.从端口的banner来看应该是apache(win32),证实一下telnet 211.87.xxx.xxxget(回车)<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><HTML><HEAD><TITLE>501 MethodNot

单向链接过多导致URL不被收录疑似绿萝作怪

从百度推出绿萝算法以来,对于SEO行业来说可谓是几家欢喜几家愁,那些买卖链接的网站或者链接中介纷纷被降权,甚至是K站,阿里微微就是个典型的例子.直到现在为止,阿里微微仍然没有恢复收录,不过现在百度对大部分作弊网站的惩罚方式是降权,特别严重的才直接做K站处理.这点不免又让我联想到谷歌的做法,百度一直在效仿谷歌,谷歌是很少去K站的.笔者没有很多数据,也不好去分析绿萝算法是如何判断一个网站有没有买卖链接,若一个URL有很多单项链接也不一定就是买链接了,像很多做网页模版的网站都会在自己设计的模版上留一个