我刚刚在台式机上安装了Windows 7 x64 Ultimate.我安装了IIS,Visual Studio 2008,注册了ASP.NET等.
我有这个ASP.NET 3.5网站,我正在努力在这个新的IIS上运行得很慢.在STA和PROD服务器(Windows 2003 Server)和旧的XP/IIS 5.1上,一切运行顺利.
通常需要1-2秒才能加载的页面需要8秒!
我在IIS论坛上看过这篇文章.它说了一些关于Vista/7没有汇集连接的东西(只是为了让你知道,网站在本地运行,但它连接到托管在远程服务器上的SQL Server 2005).
似乎需要一段时间来"开始加载"页面...我的意思是,我点击刷新它会停留几秒钟"等待localhost"...然后当它得到响应时它会正常加载整个页面.. .
我不知道如何强制Win7/IIS7.5池数据库连接.
编辑:我已经创建了一个新的空ASP.NET ASP.NET应用程序,以查看问题是否也发生.答案是否定的,它应该使用空的默认页面快速响应.也许是与数据库连接有关的东西.我会做进一步的测试.它应该是一种修复它的方法......
编辑2:调试应用程序我注意到在执行.NET代码(Page_Load等)之后发生了延迟...所以当IIS将页面提供给浏览器时,延迟似乎就在某处.
任何人都可以共享名为c3p0的jdbc连接池的来源和含义.
它是受到星球大战的启发吗?
我正在使用NHibernate和ODP.NET连接到Oracle 11g数据库.当然可能存在连接错误(网络故障,DB down,......).我在我的代码中处理所有这些异常,所以没有问题.但是当然用户可以重试他的行为(可能只是一个短暂的网络故障),并且出现了我的问题:
ODP.NET默认使用连接池.通常没问题,但是当用户在连接错误后重试动作时,NHibernate会从ODP.NET获得无效(池化)连接.用户必须多次重试(直到池为空)才能重新运行.
当然我可以在ODP.NET中禁用连接池,但我想避免这种情况.我还读到了一个设置,它检查来自池的每个返回连接的数据库连接,但这会为每个连接增加一个额外的往返,我也想避免.
有没有办法配置ODP.NET在任何连接抛出连接异常时自动清除连接池?
每次我学习关于php的新东西时,我都不得不重写我的代码(就像mysql连接不能作为句柄在会话中传递一样).
如何在项目中实现mysql连接?很多人提出了"连接池",但阅读手册后我还是输了.它就像:"连接池是mysql_pconnect!" - 我:"和......?现实中有什么不同?你能在会话中传递一个mysql_pconnect吗?为什么这个看似神秘的光环?"
让我解释一下我的情况.我有一个名为"query1"的函数:
function query1($query)
{
$db = new mysql(HOST,USER,PASS,DBNAME);
$result = $db->query($query);
$db->close();
return $result;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一种查询数据库的一种诡异而低效的方式(特别是因为你需要一个mysql句柄来处理像mysql_real_escape_string这样的函数).这样做的正确形式是什么?有人可以帮帮我吗?
谢谢,我真的很感谢你的回答.
我正在调查离开Oracle连接池并使用Tomcat连接池.我按照无数的例子来配置<Resource>Tomcat的/conf/server.xml.我发现伟大的信息在这里.但是,当我启动Tomcat时,我收到以下错误:
javax.naming.NamingException:无法加载资源工厂类[根异常是java.lang.ClassNotFoundException:org.apache.tomcat.jdbc.pool DataSourceFactory]
我正在使用Tomcat 6.0.我的<Resource>配置/conf/server.xml是:
<Resource
name="jdbc/myds"
type="javax.sql.DataSource"
auth="Container"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@10.10.10.33:1234:myds"
user="myuname"
password="mypasswd"
/>
Run Code Online (Sandbox Code Playgroud)
我明白Tomcat找不到工厂类,但我不明白为什么?我没有在文档中看到有关添加额外.jar文件的任何内容.我查看了发行版,.jar无论如何都找不到金色.
谁能告诉我我做错了什么?
在JNDI级别或Webapp级别连接池更有意义吗?例如,我可以简单地在javax.sql.DataSource创建:
<Context antiJARLocking="true">
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/myDataSource" user="user" password="password" />
</Context>
Run Code Online (Sandbox Code Playgroud)
然后在Spring中配置池:
<bean id="myDataSource" class="com.mchange.v2.c3p0.DataSources"
factory-method="pooledDataSource">
<constructor-arg>
<jee:jndi-lookup jndi-name="java:comp/env/jdbc/myDataSource" />
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
或者,我可以直接在JNDI本身配置池:
<Resource name="jdbc/myDataSource"
auth="Container"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
driverClassName="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost/myDataSource"
user="user" password="password"
minPoolSize="3"
maxPoolSize="15"
maxIdleTime="5000"
idleConnectionTestPeriod="300"
acquireIncrement="3" />
Run Code Online (Sandbox Code Playgroud)
离开这个春天:
<jee:jndi-lookup id="myDataSource" jndi-name="java:comp/env/jdbc/myDataSource" />
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,myDataSource spring bean都是一个c3p0连接池数据源,但哪一个更好?我认为在JNDI中使用池是最有意义的,但缺点是你必须将c3p0 lib推送到servlet容器级别,这可能会导致与现有servlet冲突,如果它们当前使用不同的版本.但是,将它放在JNDI中意味着您的应用程序根本不必担心池化.你们都在想什么?
我正在使用Puma作为Web服务器,而Sidekiq作为我的队列运行器.
对于多个事物(数据库连接,Redis连接,其他外部服务),我正在使用ConnectionPool gem来管理对连接的安全访问.
现在,根据我是在Sidekiq还是Puma的上下文中运行,我需要这些池的大小不同(分别与Sidekiq线程或Puma线程的数量一样大,它们是不同的)
在初始化程序中,了解基于执行上下文建立连接池的最佳方法的最佳方法是什么?
谢谢!
根据HikariCP的文档,他们提到创建固定大小的池以获得更好的性能.
minimumIdle:
此属性控制HikariCP尝试在池中维护的最小空闲连接数.如果空闲连接低于此值,HikariCP将尽最大努力快速有效地添加其他连接.但是,为了获得最高性能和对峰值需求的响应,我们建议不要设置此值,而是允许HikariCP充当固定大小的连接池.默认值:相同
maximumPoolSize
我的应用程序通常需要100个连接,并且仅在少数情况下达到200个连接.
如果我创建一个200连接固定大小的池,大多数时候100个连接将是空闲的.
那么以下哪一项是最好的:
要么
minimumIdle为100和maximumPoolSize200 来创建连接池.为什么HikariCP不推荐第二点?我认为第二个对我来说是最好的.
我正在尝试使用http客户端使用PoolingClientConnectionManager为各个主机设置最大连接来命中服务器
//Code that inilizes my connection mananger and http client
Run Code Online (Sandbox Code Playgroud)
HttpParams httpParam = httpclient.getParams(); HttpConnectionParams.setSoTimeout(httpParam,SOCKET_TIMEOUT);
HttpConnectionParams.setConnectionTimeout(httpParam, CONN_TIMEOUT);
httpclient.setParams(httpParam);
//Run a thread which closes Expired connections
new ConnectionManager(connManager).start();
//Code that executes my request
HttpPost httpPost = new HttpPost(url);
HttpEntity httpEntity = new StringEntity(request, "UTF-8");
httpPost.setEntity(httpEntity);
Header acceptEncoding = new BasicHeader("Accept-Encoding", "gzip,deflate");
httpPost.setHeader(acceptEncoding);
if(contenttype != null && !contenttype.equals("")){
Header contentType = new BasicHeader("Content-Type", contenttype);
httpPost.setHeader(contentType);
}
InputStream inputStream = null;
LOG.info(dataSource + URL + url + REQUEST + request);
HttpResponse …Run Code Online (Sandbox Code Playgroud) 我正在使用tomcat连接池org.apache.tomcat.jdbc.pool.DataSource.连接在我的数据库中显示pg_stat_activity为空application_name.
我如何在我的java应用程序中设置该应用程序名称,因此我知道每个连接的来源(因为将有多个应用程序访问同一个数据库)?
java ×5
datasource ×2
jndi ×2
tomcat ×2
acronym ×1
ado.net ×1
apache ×1
c3p0 ×1
connect ×1
database ×1
hikaricp ×1
httpclient ×1
iis-7.5 ×1
jdbc ×1
mysql ×1
nhibernate ×1
odp.net ×1
oracle ×1
performance ×1
php ×1
postgresql ×1
puma ×1
ruby ×1
sidekiq ×1
sql-server ×1
tomcat-jdbc ×1
tomcat6 ×1
windows-7 ×1