它决定部署一个应用程序到Jetty 8,之前使用的是Tomcat 7. Jetty 8正在使用默认值,似乎工作正常,但随后偶尔等待连接,看着jetty.xml我很困惑关于线程和连接器之间的相互作用.
但一般的问题是,默认设置是否适用于负载很重的Web应用程序,还是需要进行明显的更改?
更新 让我尝试更具体地说明这一点.
在jetty.xml中,它表示maxThreads = 200,因此它理论上可以并行处理200个请求(比我们必须处理的要多),但是有一个关于应该配置多少内存jetty的经验法则.
它还定义了一个SelectChannelConnector连接器,我认为这是接收请求并将它们移植到线程的东西.这个连接器是我们可用的最佳性能吗?
为什么这个代码
public class Apostrophier
{
public static String replace(String s)
{
return s.replace('\u0092','\u0027');
}
}
Run Code Online (Sandbox Code Playgroud)
给
'空字符文字'
当我尝试编译?
(使用java 8)鉴于图像用户需要能够以像素为单位指定最小/最大图像大小,并且还需要以kbs为单位指定已保存图像的最大大小,图像将保存为jpg.
所以我通过调整缓冲图像的大小来完成第一个工作:
public static BufferedImage resizeUsingImageIO(Image srcImage, int size)
{
int w = srcImage.getWidth(null);
int h = srcImage.getHeight(null);
// Determine the scaling required to get desired result.
float scaleW = (float) size / (float) w;
float scaleH = (float) size / (float) h;
MainWindow.logger.finest("Image Resizing to size:" + size + " w:" + w + ":h:" + h + ":scaleW:" + scaleW + ":scaleH" + scaleH);
//Create an image buffer in which to paint on, create as an opaque …Run Code Online (Sandbox Code Playgroud) 创建了一个新的Ubuntu c3.xlarge实例,当我到达存储选项时,我可以选择将ROOT更改为通用SSD,预置IOPS或磁性,如果我选择预置IOPS,我可以设置另一个值.Instance Store 0下的附加数据存储没有选项,但如果更改为EBS,则我有相同的选项.
我真的很难理解:
亚马逊的文档非常不清楚
我正在使用此实例将数据从文本文件传输到Postgres关系数据库,这些文件必须逐行处理,每行有一些INSERT语句,因此在我的本地计算机上运行缓慢(500万行数据需要15个小时).最初数据库是单独在RDS上,但它非常慢,所以我在实例本身安装数据库本身删除网络延迟,这加快了一些事情,但它仍然比我当地简陋的Linux服务器慢得多.
在加载数据CPU实例时查看实例日志仅为6%,因此现在认为磁盘可能会限制因素.数据库将使用/(不确定是SSD还是磁性 - 如何查找)磁盘和数据文件位于/ mnt(使用Instance Store 0)磁盘上.
我只需要这个实例做两件事:
(所以数据库只是一个临时步骤)
搜索索引被转移到EBean服务器然后我不需要这个实例再过一个月,然后我用新数据重复这个过程,因此我可以花更多的钱来加快处理,因为我只是每个月使用1天,然后我可以停止实例并且不会产生任何进一步的费用?
请问我该怎么做才能确定问题并加快速度?
我有一个网站(在Elastic Beanstalk上的Tomcat中运行),可以生成艺术家唱片(一个艺术家的单页).这可能是资源密集型的,因此艺术家页面在一个月内不会发生变化,因此我在其前面放置了CloudFront Distribution.
我认为这意味着我的服务器不会再多次提供艺术家请求,但这并不是那么好.这篇文章解释了每个边缘位置(欧洲,美国等)在第一次查找资源时都会遇到错误,并且在云端缓存中保留了多少资源,因此可以删除它们.
所以为了解决这个问题,我已经通过服务器代码更改了在S3中的存储桶中存储网页的副本并在请求进入时首先检查这一点,因此如果艺术家页面已经存在于S3中,那么服务器将检索它并返回其内容作为网页.这大大减少了处理,因为它只为特定艺术家构建一次网页.
然而:
所以我想知道我是否可以改进这一点 - 我知道你可以构建一个S3存储桶作为重定向到另一个网站.是否有每页的方式我可以让艺术家请求转到S3存储桶,然后让它返回页面,如果它存在或调用服务器,如果它没有?
或者我可以让服务器检查页面是否存在然后重定向到S3页面而不是先将页面下载到服务器?
我使用的Hibernate版本4.3.11与H2 database版本1.3.172
所以客户得到这个例外(从未有过)
Found two representations of same collection: com.jthink.songlayer.Song.coverArts
org.hibernate.HibernateException: Found two representations of same collection: com.jthink.songlayer.Song.coverArts
at org.hibernate.engine.internal.Collections.processReachableCollection(Collections.java:170)
at org.hibernate.event.internal.FlushVisitor.processCollection(FlushVisitor.java:59)
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:121)
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:82)
at org.hibernate.event.internal.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:76)
at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:172)
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:231)
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:102)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
at com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.analyseFiles(WindowsUpdateItunesWithChanges.java:296)
at com.jthink.songkong.ituneshelper.WindowsUpdateItunesWithChanges.updateItunes(WindowsUpdateItunesWithChanges.java:175)
at com.jthink.songkong.ituneshelper.UpdateItunesWithChanges.call(UpdateItunesWithChanges.java:185)
at com.jthink.songkong.ituneshelper.UpdateItunesWithChanges.call(UpdateItunesWithChanges.java:33)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown S
Run Code Online (Sandbox Code Playgroud)
我知道这可能有很多原因,但奇怪的是当我提交事务时会发生这种情况,在特定的hibernate会话期间我只加载一个类,我从来没有真正对这个特定类进行任何更改
我的Song班级有这个链接到'coverArts'
@OneToMany(fetch=FetchType.EAGER, cascade={CascadeType.ALL})
private List<CoverArt> coverArts; …Run Code Online (Sandbox Code Playgroud) 使用Hibernate 4.3.11和Ehcache 2.7.0
为什么Hibernates getStatistics()返回的命中/未命中与CacheManager返回的值不匹配.我为单个类启用了第二级缓存.
所以用这个代码
Statistics stats = HibernateUtil.getFactory().getStatistics();
writeToBothLogs("Report:" + currentReportId + ":DbConnect:" + stats.getConnectCount());
writeToBothLogs("Report:" + currentReportId + ":DbQueries:" + stats.getQueryExecutionCount());
writeToBothLogs("Report:" + currentReportId + ":2ndLevelPut:" + stats.getSecondLevelCachePutCount());
writeToBothLogs("Report:" + currentReportId + ":2ndLevelHit:" + stats.getSecondLevelCacheHitCount());
writeToBothLogs("Report:" + currentReportId + ":2ndLevelMiss:" + stats.getSecondLevelCacheMissCount());
String[] cacheNames = CacheManager.getInstance().getCacheNames();
for(String cacheName:cacheNames)
{
SecondLevelCacheStatistics secondLeveleStats = stats.getSecondLevelCacheStatistics(cacheName);
writeToBothLogs("Report:" + currentReportId + ":"+cacheName+":2ndLevelPut:" + secondLeveleStats.getPutCount());
writeToBothLogs("Report:" + currentReportId + ":"+cacheName+":2ndLevelHit:" + secondLeveleStats.getHitCount());
writeToBothLogs("Report:" + currentReportId + ":"+cacheName+":2ndLevelMiss:" + secondLeveleStats.getMissCount());
writeToBothLogs("Report:" + currentReportId …Run Code Online (Sandbox Code Playgroud) 我最初使用的更复杂的子类看到此问题ThreadPoolExecutor,但是我已经对其进行了简化,因此现在只包含一些其他调试功能,并且仍然遇到相同的问题。
import com.jthink.songkong.cmdline.SongKong;
import com.jthink.songkong.ui.MainWindow;
import com.jthink.songkong.util.SongKongThreadFactory;
import java.util.concurrent.*;
import java.util.logging.Level;
public class TimeoutThreadPoolExecutor extends ThreadPoolExecutor
{
/**
* Uses the default CallerRunsPolicy when queue is full
* @param workerSize
* @param threadFactory
* @param queue
*/
public TimeoutThreadPoolExecutor(int workerSize, ThreadFactory threadFactory, LinkedBlockingQueue<Runnable> queue)
{
super(workerSize, workerSize, 0L, TimeUnit.MILLISECONDS, queue, threadFactory, new CallerRunsPolicy());
}
/**
* Allow caller to specify the RejectedExecutionPolicy
* @param workerSize
* @param threadFactory
* @param queue
* @param reh
*/
public TimeoutThreadPoolExecutor(int workerSize, …Run Code Online (Sandbox Code Playgroud) java executorservice java.util.concurrent threadpoolexecutor
我为 MacOS 分发了一个 Java 应用程序,它经过开发人员签名但未经过公证。不确定从哪里开始,因为文档太偏向于使用我不使用的 Xcode 创建应用程序,但我只想用最简单的方法来公证我的应用程序,然后继续。
阅读文档我已经有一些担忧:
我目前正在使用 Java 8,是否可以对 Java 8 应用程序进行公证,或者我是否需要迁移到 Java 11。我宁愿不迁移到 Java 11,因为它会在我支持的其他一些平台上引起问题。
我的开发 Mac 机器是旧的 MacBook Pro,因此无法更新到 OSX El Capitan 10.11.6 之后,我可以用这台机器公证吗?我确实有一台更新的机器,但它没有设置用于开发,我对将 Developer Id 证书转移给它有一些担忧,因为首先设置它是有问题的。
我使用 AppBundler fork https://github.com/TheInfiniteKind/appbundler/来打包我的应用程序
这由执行签名等操作的 ant 脚本构建文件调用,我们最终使用 dmgCanvas 创建了一个 dmg
我在下面发布了蚂蚁脚本,希望有人可以从基本步骤开始
#!/bin/bash
#set -x
cd /Users/paul/code/jthink/songkong/src/main/scripts
hiutil -C -fapplehelpbook/SongKongHelp/SongKongHelp.helpindex applehelpbook/SongKongHelp/
cd /Users/paul/code/jthink/songkong
rm -fr /Applications/SongKong.app
mvn clean
mvn -DskipTests=true install
rm -fr target/songkong-6.6
unzip target/songkong-6.6-distribution.zip -d target
ant
sudo cp -r target/songkong-6.6/applehelpbook/SongKongHelp /Applications/SongKong.app/Contents/Resources
rm /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS/libjli.dylib
cp /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/Home/jre/lib/jli/libjli.dylib /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS …Run Code Online (Sandbox Code Playgroud)我在自定义 linux 硬件上使用自定义 Java 11 运行时,Java 运行时不是我构建的。但是我有一个问题,我的应用程序需要访问字体并且运行时没有配置任何字体,所以我得到了这个堆栈跟踪
Exception in thread "main" java.lang.InternalError: java.lang.reflect.InvocationTargetException
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.desktop/java.awt.Font.getFont2D(Font.java:497)
at java.desktop/java.awt.Font.getFamily(Font.java:1410)
at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
at java.desktop/java.awt.Font.getFamily(Font.java:1376)
at java.desktop/java.awt.Font.toString(Font.java:1869)
at java.base/java.lang.String.valueOf(String.java:2951)
at java.base/java.io.PrintStream.println(PrintStream.java:897)
at Fonts.main(Fonts.java:7)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
... 10 more
Caused by: java.lang.NullPointerException
at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
Run Code Online (Sandbox Code Playgroud)
我可以提供一些字体,并且我已经计算出我需要创建一个fontconfig.properties并将我放入 Java runtimes …