You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/01 15:17:52 UTC
[lucene-solr] 02/02: @481 Start working out real life just a bit.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit c316d5fd39f4070ec7b99f73b094da49a0c9ec19
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sat Aug 1 10:17:11 2020 -0500
@481 Start working out real life just a bit.
---
.../org/apache/solr/cloud/ElectionContext.java | 4 ++--
.../solr/cloud/ShardLeaderElectionContextBase.java | 7 -------
.../org/apache/solr/servlet/SolrQoSFilter.java | 23 +++++++++++-----------
.../java/org/apache/solr/common/util/SysStats.java | 9 +++++----
4 files changed, 19 insertions(+), 24 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
index f6804e0..4e690eb 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
@@ -40,11 +40,11 @@ public abstract class ElectionContext implements Closeable {
this.leaderPath = leaderPath;
this.leaderProps = leaderProps;
- ObjectReleaseTracker.track(this);
+ assert ObjectReleaseTracker.track(this);
}
public void close() {
- ObjectReleaseTracker.release(this);
+ assert ObjectReleaseTracker.release(this);
}
public void cancelElection() throws InterruptedException, KeeperException {
diff --git a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
index ee018e3..0fbc408 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
@@ -159,13 +159,6 @@ class ShardLeaderElectionContextBase extends ElectionContext {
leaderZkNodeParentVersion = stat.getVersion();
log.info("Got leaderZkNodeParentVersion {}", leaderZkNodeParentVersion);
}
- if (result.getType() == ZooDefs.OpCode.error) {
- OpResult.ErrorResult dresult = (OpResult.ErrorResult) result;
- if (dresult.getErr() > 0) {
- errors.add(it.next().getPath());
- }
- }
-
}
// assert leaderZkNodeParentVersion != null;
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
index e7e3e9b..88ddcd2 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
@@ -40,7 +40,7 @@ public class SolrQoSFilter extends QoSFilter {
static final String MAX_REQUESTS_INIT_PARAM = "maxRequests";
static final String SUSPEND_INIT_PARAM = "suspendMs";
static final int PROC_COUNT = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
- public static final int OUR_LOAD_HIGH = 5;
+ public static final int OUR_LOAD_HIGH = 99;
protected int _origMaxRequests;
@@ -61,32 +61,33 @@ public class SolrQoSFilter extends QoSFilter {
HttpServletRequest req = (HttpServletRequest) request;
String source = req.getHeader(QoSParams.REQUEST_SOURCE);
if (source == null || !source.equals(QoSParams.INTERNAL)) {
- // nocommit - deal with no supported, use this as a fail safe with high and low watermark?
- double load = ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
- if (load < 0) {
- log.warn("SystemLoadAverage not supported on this JVM");
- load = 0;
- }
+
double ourLoad = sysStats.getAvarageUsagePerCPU();
if (ourLoad > OUR_LOAD_HIGH) {
log.info("Our individual load is {}", ourLoad);
int cMax = getMaxRequests();
if (cMax > 2) {
- int max = Math.max(1, (int) ((double)cMax * 0.60D));
+ int max = Math.max(2, (int) ((double)cMax * 0.60D));
log.info("set max concurrent requests to {}", max);
setMaxRequests(max);
}
} else {
+ // nocommit - deal with no supported, use this as a fail safe with high and low watermark?
+ double load = ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
+ if (load < 0) {
+ log.warn("SystemLoadAverage not supported on this JVM");
+ load = 0;
+ }
double sLoad = load / (double) PROC_COUNT;
- if (sLoad > 1.0D) {
+ if (sLoad > PROC_COUNT) {
int cMax = getMaxRequests();
if (cMax > 2) {
- int max = Math.max(1, (int) ((double) cMax * 0.60D));
+ int max = Math.max(2, (int) ((double) cMax * 0.60D));
log.info("set max concurrent requests to {}", max);
setMaxRequests(max);
}
- } else if (sLoad < 0.9D && _origMaxRequests != getMaxRequests()) {
+ } else if (sLoad < PROC_COUNT && _origMaxRequests != getMaxRequests()) {
log.info("set max concurrent requests to orig value {}", _origMaxRequests);
setMaxRequests(_origMaxRequests);
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java b/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
index 241ebad..16d2231 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
@@ -14,6 +14,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
public class SysStats extends Thread {
+ public static final int REFRESH_INTERVAL = 10000;
static final int PROC_COUNT = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
private long refreshInterval;
@@ -27,7 +28,7 @@ public class SysStats extends Thread {
public static synchronized SysStats getSysStats() {
if (sysStats == null) {
- sysStats = new SysStats(10000);
+ sysStats = new SysStats(REFRESH_INTERVAL);
}
return sysStats;
}
@@ -43,7 +44,7 @@ public class SysStats extends Thread {
if (sysStats != null) {
sysStats.stopMonitor();
}
- sysStats = new SysStats(10000);
+ sysStats = new SysStats(REFRESH_INTERVAL);
}
public void doStop() {
@@ -135,7 +136,7 @@ public class SysStats extends Thread {
double usage = 0D;
for (ThreadTime threadTime : values) {
synchronized (threadTime) {
- usage += (threadTime.getCurrent() - threadTime.getLast()) / (refreshInterval * 10000);
+ usage += (threadTime.getCurrent() - threadTime.getLast()) / (refreshInterval * REFRESH_INTERVAL);
}
}
return usage;
@@ -154,7 +155,7 @@ public class SysStats extends Thread {
double usage = 0D;
if(info != null) {
synchronized (info) {
- usage = (info.getCurrent() - info.getLast()) / (refreshInterval * 10000);
+ usage = (info.getCurrent() - info.getLast()) / (TimeUnit.MILLISECONDS.toNanos(refreshInterval));
}
}
return usage;