在DBCP中的连接泄漏和死锁问题之后,我们决定用Tomcat JDBC池替换它.当然,迁移非常简单.
但是在我注意到的生产环境中部署之后,运行两个Tomcats的服务器上的负载从4-4.5增加到5.5.除了改变游泳池之外,我们没有做更多的事情.此外,用JMeter测量的性能下降约5%.
我花了一些时间来调整池参数,但没有可见效果.我贴我目前的配置(来自<GlobalNamingResources>
于server.xml
)以下:
<Resource name="jdbc/xxxxxx"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
initialSize="10"
maxActive="100"
minIdle="10"
maxIdle="50"
maxWait="10000"
testOnBorrow="true"
testOnReturn="false"
testOnConnect="false"
testWhileIdle="false"
validationQuery="SELECT 1 from dual"
validationInterval="30000"
suspectTimeout="60"
timeBetweenEvictionRunsMillis="30000"
removeAbandonedTimeout="60"
removeAbandoned="true"
logAbandoned="true"
abandonWhenPercentageFull="50"
minEvictableIdleTimeMillis="60000"
jmxEnabled="true"
username="xxxxx"
password="xxxxx"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:oci:xxxxx"/>
Run Code Online (Sandbox Code Playgroud)
FairQueue和PoolSweeperEnabled都是真的
在Spring applicationContext-jdbc.xml中我只有:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="resourceRef">
<value>true</value>
</property>
<property name="jndiName">
<value>java:comp/env/jdbc/PortalDB</value>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我想,JDBC_pool应该比开箱即用的DBCP快.
我在Sonarqube中检查了一个Android项目.它似乎是用Java,Android和XML插件正确设置的,我也解析了Java和XML:
Sonar插件的My Gradle片段如下所示:
sonarqube {
properties {
property 'sonar.projectVersion', "$android.defaultConfig.versionName"
property 'sonar.java.source', JavaVersion.VERSION_1_8
property 'sonar.java.target', JavaVersion.VERSION_1_8
property 'sonar.sourceEncoding', 'UTF-8'
property "sonar.sources", "src/main"
property "sonar.binaries", "build/intermediates/classes/debug"
property "sonar.java.binaries", "build/intermediates/classes/debug"
property "sonar.tests", "src/test/java, src/androidTest/java"
property "sonar.java.test.binaries", "build/intermediates/classes/debug"
property "sonar.import_unknown_files", true
}
Run Code Online (Sandbox Code Playgroud)
}
但无论如何,即使启用了'sonar.import_unknown_files',我仍然会对xml文件的"无法找到文件"发出警告:
10:36:04.768 [Task worker for ':' Thread 6] DEBUG o.s.p.a.lint.AndroidLintProcessor - Processing Issue: AllowBackup
10:36:04.769 [Task worker for ':' Thread 6] WARN o.s.p.a.lint.AndroidLintProcessor - Unable to find file /home/me/project/app/src/main/AndroidManifest.xml to report issue
10:36:04.770 [Task worker for ':' Thread 6] DEBUG …
Run Code Online (Sandbox Code Playgroud) 刷新ActionBar标题时遇到问题.应用程序相当简单,目前只有一个活动:`
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_count_scrolling"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fabReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_alert"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|end"/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
布局content_count_scrolling
仅NestedScrollView
包含RecyclerView
内部.
我的情况是,当我EditText
在任何RecyclerView行中输入一个数字时,它会在数据模型中设置一个值,并重新计算总值(所有行的总和).此总值应设置为ActionBar.title
.为此,我也使用RxBus.MainActivity如下:
public class MainActivity extends AppCompatActivity {
// ....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_scrolling);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitle("");
mRxBus = getRxBusSingleton();
// ....
}
}
public void refreshActionBarTitle() {
String total …
Run Code Online (Sandbox Code Playgroud) android ×2
android-lint ×1
android-xml ×1
jdbc-pool ×1
load ×1
performance ×1
sonarqube ×1
tomcat ×1