为什么有的应用响应快Load却较高?

为什么有的应用响应快Load却很高? 响应快 => 排队少 => Load应该更低吧? 但今天比较了两个服务端应用,一个I/0比较多,响应比较慢,单核Load在0.7左右;另一个I/O比较少,响应非常快,单核Load却几乎达到了1.0 . 今天经高手指点,才终于明白。 I/O比较多的应用中,由于I/O阻塞,老是会有任务会被从队列里剔除,所以队列并不密集;而I/O较少的应用则相反。 如果把CPU队列比做一条高速路,汽车就是任务;任务发生I/O阻塞,相当于汽车发生故障,车子被暂时停到了路肩上。 对于I/O密集型的应用,路肩上停的车很多,路上跑的车却并不多,所以道路会感觉很松。 不过,响应快并不意味着Load就一定会高,两者没有简单的正比关系,必须具体情况具体分析。

压力测试要测久一点才有意义

压力测试要测久一点才有意义。 有些系统指标,比如cpu load, 会随着测试的执行而逐渐变高。跑完60秒后发现单核load仍低于1就宣布压测通过,这是不对的。 那要在什么情况下才停止执行? 一般来说,可以等到系统指标稳定到一个值,或者系统指标超过了你心目中的安全权限(比如单核load>2)

Lucene: Query vs Filter

Query: How well does this document match the search condition? A question of score Filter: Does the document match the search condition, or not? A question of true or false. Filters can be used for exact matching, range queries etc. Filtering is faster the querying because it doesn’t care about scoring.

Lucene代码示例:使用SpanQuery找到keyword在文档中第一次出现的地方

无干货,仅供复制 位置信息类 package player.kent.chen.temp.lucene.span; import org.apache.commons.lang.builder.ToStringBuilder; public class KeywordLocation { private String file; /** * position in the token stream */ private int position; private KeywordLocation() { } public static final KeywordLocation createInstance(String file, int position) { KeywordLocation instance = new KeywordLocation(); instance.file = file; instance.position = position; return instance; } public String getFile() { …

Lucene代码示例:使用SpanQuery找到keyword在文档中第一次出现的地方 Read More »

例:lucene 的同义词分析器

package player.kent.chen.temp.lucene.synonymon; import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Queue; import org.apache.lucene.analysis.TokenFilter; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute; import org.apache.lucene.analysis.tokenattributes.TermAttribute; import org.apache.lucene.util.AttributeSource; public class MySynonymFilter extends TokenFilter { private final TermAttribute termAttr; private final PositionIncrementAttribute piAttr; private final Queue<String> synonyms = new LinkedList<String>(); private AttributeSource.State attrsState; protected MySynonymFilter(TokenStream input) { super(input); this.piAttr = addAttribute(PositionIncrementAttribute.class); this.termAttr = addAttribute(TermAttribute.class); …

例:lucene 的同义词分析器 Read More »

Lucene Analyzer中的Position Increment

带点语病地说,Position Increment 代表token之间的“间隙值”。 一般来说,这个值等于1.   比如 Obama is a politician 分拆后, 引用 Obama      – position1 is         – position2 a          – position3 politician – position4 1,2,3,4 以1累进 如果Position Increment大于1,则代表有的词省略了。 引用 Obama      – position1 politician – position4 从1直接跳跃到4 如果Position Increment为0,则一般是因为Analyzer配上了同义词 引用 Obama      – position1 politician – position4 statesman  – position4 politician和statesman同义,它们的位置都是4