精华内容
下载资源
问答
  • WAS性能调优以及对jvm、线程数、ORB大小的配置
  • 针对WAS6.1,对线程数、jvm,日志以及数据库连接进行性能调优
  • tomcat线程数

    千次阅读 2017-01-10 15:25:03
    测试tomcat线程数: maxThreads="2" minSpareThreads="1" maxQueueSize="1"/> <Connector port="8080" executor="tomcatThreadPool" protocol="

    测试tomcat线程数:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="2" minSpareThreads="1" maxQueueSize="1"/>
    <Connector port="8080"  executor="tomcatThreadPool" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"  URIEncoding="UTF-8"/>
    <Connector  executor="tomcatThreadPool" port="8009" protocol="AJP/1.3" redirectPort="8443" />
    启用的协议是apr协议。因为我用了executor属性,官方文档中对Connector标签中的executor属性是这么说的:



    A reference to the name in an Executor element. If this attribute is set, and the named executor exists, the connector will use the executor, and all the other thread attributes will be ignored. Note that if a shared executor is not specified for a connector then the connector will use a private, internal executor to provide the thread pool.

    如果用了executor属性,那么所有其他的thread的属性将会被忽略。所以此时我们只有看Executor标签,来设置executor标签中的属性:


    maxThreads

    (int) The max number of active threads in this pool, default is 200


    minSpareThreads

    (int) The minimum number of threads always kept alive, default is 25


    maxQueueSize

    (int) The maximum number of runnable tasks that can queue up awaiting execution before we reject them. Default value is Integer.MAX_VALUE


    如果我的executor标签中不设置maxQueneSize属性,那么默认的为int的最大值,意思就是:如果我不设置这个,那么请求数在达到Integer.MAX_VALUE之前是不会被拒绝的,都会放在队列里面等待执行。

    如果我按照上面的配置,最小存活数是1,最大活跃线程数是2,队列里面最大是1,那么当我们重启tomcat的时候,第一次去请求会发现一共只有3个请求线程被执行(2+1),剩下的请求都会被tomcat直接reject拒绝掉,如果你去捕获异常,会发现抛出如下错误:

    警告: Socket processing request was rejected for:469001312
    java.util.concurrent.RejectedExecutionException: Work queue full.
    at org.apache.catalina.core.StandardThreadExecutor.execute(StandardThreadExecutor.java:172)
    at org.apache.tomcat.util.net.AprEndpoint.processSocketWithOptions(AprEndpoint.java:882)
    at org.apache.tomcat.util.net.AprEndpoint$Acceptor.run(AprEndpoint.java:1088)
    at java.lang.Thread.run(Thread.java:745)


    一月 10, 2017 2:59:34 下午 org.apache.tomcat.util.net.AprEndpoint processSocket
    警告: Socket processing request was rejected for:468993104
    java.util.concurrent.RejectedExecutionException: Work queue full.
    at org.apache.catalina.core.StandardThreadExecutor.execute(StandardThreadExecutor.java:172)
    at org.apache.tomcat.util.net.AprEndpoint.processSocket(AprEndpoint.java:913)
    at org.apache.tomcat.util.net.AprEndpoint$Poller.run(AprEndpoint.java:1973)
    at java.lang.Thread.run(Thread.java:745)
    socket请求被拒绝,直接返回502错误。

    当我们再次用多线程去请求的时候,发现此时就不一定只有3个线程可用了,会发现基本上都会大于3个?(why)


    展开全文
  • 配置线程池时线程数设置多少好

    千次阅读 2014-04-14 23:14:15
    一般总结哦,有其他更好的方式,希望各位留言,谢谢...CPU密集型时,任务可以少配置线程数,大概和机器的cpu核数相当,这样可以使得每个线程都在执行任务 IO密集型时,大部分线程都阻塞,故需要多配置线程数,2*cpu核数

    一般总结哦,有其他更好的方式,希望各位留言,谢谢。

    CPU密集型时,任务可以少配置线程数,大概和机器的cpu核数相当,这样可以使得每个线程都在执行任务

    IO密集型时,大部分线程都阻塞,故需要多配置线程数,2*cpu核数


    操作系统之名称解释:

    某些进程花费了绝大多数时间在计算上,而其他则在等待I/O上花费了大多是时间,

    前者称为计算密集型(CPU密集型)computer-bound,后者称为I/O密集型,I/O-bound。


    展开全文
  • 设置Weblogic的线程数有两种方法, 第一种,通过启动参数设置: -Dweblogic.threadpool.MinPoolSize=1000 -Dweblogic.threadpool.MaxPoolSize=1000   可以加在setDomainEnv.sh文件JAVA_OPTIONS下面; 第二种...

    使用Weblogic版本:Weblogic 11g(10.3.6)

    设置Weblogic的线程数有两种方法,

    第一种,通过启动参数设置:

    -Dweblogic.threadpool.MinPoolSize=1000 -Dweblogic.threadpool.MaxPoolSize=1000

     

    可以加在setDomainEnv.sh文件JAVA_OPTIONS下面;

    第二种,通过config.xml配置文件:

     
    1. <server>

    2.     <name>AdminServer</name>

    3.     <self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-size-min>

    4.     <self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-size-max>

    5. </server>

     

     

    Window环境下设置完应该直接重新启动就可以生效,Linux下,有可能会出现以下错误:

     
    1.  
    2. Attempting to allocate 4G bytes

    3.  
    4. There is insufficient native memory for the Java

    5. Runtime Environment to continue.

    6.  
    7. Possible reasons:

    8.   The system is out of physical RAM or swap space

    9.   In 32 bit mode, the process size limit was hit

    10.  
    11. Possible solutions:

    12.   Reduce memory load on the system

    13.   Increase physical memory or swap space

    14.   Check if swap backing store is full

    15.   Use 64 bit Java on a 64 bit OS

    16.   Decrease Java heap size (-Xmx/-Xms)

    17.   Decrease number of Java threads

    18.   Decrease Java thread stack sizes (-Xss)

    19.   Disable compressed references (-XXcompressedRefs=false)

    20.  
    21. java.lang.OutOfMemoryError: Resource temporarily unavailable in tsStartJavaThread (lifecycle.c:1097).

    22.  
    23. Attempting to allocate 4G bytes

    24.  
    25. There is insufficient native memory for the Java

    26. Runtime Environment to continue.

    27.  
    28. Possible reasons:

    29.   The system is out of physical RAM or swap space

    30.   In 32 bit mode, the process size limit was hit

    31.  
    32. Possible solutions:

    33.   Reduce memory load on the system

    34.   Increase physical memory or swap space

    35.   Check if swap backing store is full

    36.   Use 64 bit Java on a 64 bit OS

    37.   Decrease Java heap size (-Xmx/-Xms)

    38.   Decrease number of Java threads

    39.   Decrease Java thread stack sizes (-Xss)

    40.   Disable compressed references (-XXcompressedRefs=false)

     

    出现这个原因的问题可能是因为Linux下系统对用户的默认线程数做了限制,可以通过:

    ulimit -a

     

    命令进行查看:

     
    1. core file size          (blocks, -c) 0

    2. data seg size           (kbytes, -d) unlimited

    3. scheduling priority             (-e) 0

    4. file size               (blocks, -f) unlimited

    5. pending signals                 (-i) 515223

    6. max locked memory       (kbytes, -l) 64

    7. max memory size         (kbytes, -m) unlimited

    8. open files                      (-n) 1024

    9. pipe size            (512 bytes, -p) 8

    10. POSIX message queues     (bytes, -q) 819200

    11. real-time priority              (-r) 0

    12. stack size              (kbytes, -s) 10240

    13. cpu time               (seconds, -t) unlimited

    14. max user processes              (-u) 1024

    15. virtual memory          (kbytes, -v) unlimited

    16. file locks                      (-x) unlimited

     

    其中

    max user processes              (-u) 1024

     

    表示当前系统允许的最大线程数,可以把此参数设大一些。

    ulimit -u 5000

     

    设置当前系统用户最大允许的线程数,只对本次会话有效,如果想要永久生效,可以通过修改:

     
    1. $ cat /etc/security/limits.d/90-nproc.conf 

    2. # Default limit for number of user's processes to prevent

    3. # accidental fork bombs.

    4. # See rhbz #432903 for reasoning.

    5.  
    6. *          soft    nproc    1024

     

    只需要将1024改成你需要的值即可,设置完需要重启系统已生效。

    展开全文
  • was 线程挂起

    千次阅读 2017-01-05 11:40:38
    [15-1-30 16:32:17:797 CST] 00000003 ThreadMonitor W WSVR0605W: 线程“WebContainer : 26”(0000029f)已保持活动状态 685090 毫秒,此线程可能已挂起。在服务器中共有 25 个线程可能处于挂起状态。 at sun....

    [15-1-30 16:32:17:797 CST] 00000003 ThreadMonitor W   WSVR0605W: 线程“WebContainer : 26”(0000029f)已保持活动状态 685090 毫秒,此线程可能已挂起。在服务器中共有 25 个线程可能处于挂起状态。

    at sun.misc.Unsafe.park(Native Method)
    
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:184)
    
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:822)
    
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:853)
    
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1189)
    
    at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:197)
    
    at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:273)
    
    at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:66)
    
    at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
    
    at org.apache.activemq.ActiveMQConnection.doAsyncSendPacket(ActiveMQConnection.java:1275)
    
    at org.apache.activemq.ActiveMQConnection.asyncSendPacket(ActiveMQConnection.java:1269)
    
    at org.apache.activemq.ActiveMQSession.(ActiveMQSession.java:252)
    
    at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:317)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    
    at java.lang.reflect.Method.invoke(Method.java:611)
    
    
    
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
    
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
    
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
    
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
    
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
    
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
    
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
    
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
    
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
    
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
    
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
    
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
    
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    
    
    
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)

    从日志看,线程挂起在获取数据源连接的地方。问题可能是由于集群环境下获取数据源出现死锁,从而导致资源无法释放,最终线程池被耗尽,线程挂起。 最后只能重启WAS服务。

    这个问题的解决办法是:在数据源里面增加一个参数 useRRASetEquals 设置为 true

    添加路径:

           资源 -> JDBC -> XXX数据源->定制属性 -> 新建

    增加参数: useRRASetEquals ,值为 true , 类型为 java.lang.Boolean

    这个参数应该是WAS7新加的,因为加这个参数有版本要求,必须是 7.0.0.13 之后的版本,否则会报错。

    展开全文
  • 文章来源:风云社区 ...max_connections:支持的最大并发连接 The maximum permitted number of simultaneous client connections show variables like 'innodb_thread_concurrency' innod...
  • 线程同步之交替打印数字
  • 线程已被中止- “Thread was being aborted” 线程已被中止- “Thread was being aborted” 遇到过这个exception么? 这个exception是为什么而产生的呢? 下面的代码段来自MSDN, 很有说明性. 简单来说...
  • // If the task was previously queued, remove it from the queue if (taskWasPreviouslyQueued) TryDequeue(task); // Try to run the task. return base.TryExecuteTask(task); } /// <summary>...
  • 设置Weblogic的线程数有两种方法

    千次阅读 2015-09-09 14:02:00
    设置Weblogic的线程数有两种方法, 第一种,通过启动参数设置: 1 -Dweblogic.threadpool.MinPoolSize=1000 -Dweblogic.threadpool.MaxPoolSize=1000 ...
  • python多线程结束线程Python threading module is used to implement multithreading in python programs. In this lesson, we will study about Thread and different functions of python threading module. ...
  • 今天开始就来总结一下java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及线程优先级 4....
  • 线程-001-线程简介

    万次阅读 2016-04-14 15:15:05
    线程的概念 ...当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。 当 Java 虚拟机启...
  • 【多线程线程状态和创建方式

    千次阅读 多人点赞 2021-02-24 20:28:30
    目录线程状态线程创建方式继承Thread和实现Runnable接口创建线程方式Callable接口创建线程线程池创建线程 线程状态 线程共存在5种状态:新建、就绪、运行、阻塞、死亡,如下图: 解释说明各个状态: 1、新建状态...
  • 朱燚 线程

    千次阅读 2012-04-14 16:10:13
    怎样创建一个线程受托管的线程与 Windows线程前台线程与后台线程名为BeginXXX和EndXXX的方法是做什么用的异步和多线程有什么关联 WinForm多线程编程篇 我的多线程WinForm程序老是抛出Inva
  • 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂。所以,这里力图用简单的例子,让你对多线程有...def music(): for i in range(2): print “I was listening to music. %s” %ctime() s
  • C#多线程编程:线程同步

    千次阅读 2019-06-05 18:35:58
    正如前面所看到的一样,多个线程同时使用共享对象会造成很多问题。同步这些线程使得对共享对象的操作能够以正确的顺序执行是非常重要的。...当一个线程执行递增和递减操作时,其他线程需要依次等待。这种...
  • 线程处理sql server2008某个表中的数据时,在Update记录的时候出现了【Transaction (Process ID 146) was deadlocked on lock resources with another process and has been chosen as the deadlock victim....
  • WAS IBM java线程堆栈分析工具,jca467.jar
  • 线程编程之线程取消

    千次阅读 2012-03-13 22:10:49
    关键: pthread_cancel函数发送...一般情况下,线程在其主体函数退出的时候会自动终止,但同时也可以因为接收到另一个线程发来的终止(取消)请求而强制终止。 2 线程取消的语义 线程取消的方法是向目标线程
  • macOS多线程限制

    千次阅读 2019-11-20 17:24:22
    macOS下进行python多线程开发有的时候会报错 may have been inprogress inanother thread when fork() was called 2.解决办法 在pycharm中设置 写入: ;OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES ...
  • 14.1 threading--多线程

    千次阅读 2016-06-30 08:29:06
    14. 并行执行库本库主要提供了并行执行多任务的功能,将提供一些工具来给不同的任务来选择,比如是CPU密集的任务,...threading.active_count() 返回当前有多少个活动的线程。 threading.current_thread() 返回当
  • 原因: boost版本在1.50后,将该TIME_UTC这个名字修改为TIME_UTC_,  只需要将task_adaptors.hpp中的TIME_UTC修改为boost::TIME_UTC_即可. 修改名字的原因是C++ 11定义了TIME_UTC这个宏,为了避免冲突需要作此...
  • Java-多线程框架Executor

    千次阅读 2017-09-01 11:07:40
    概述 Executor框架简介 ...Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会
  • 线程与信号

    千次阅读 2019-04-11 10:10:38
    在一个单进程中,信号会打断进程的执行,并且递送到进程中处理,而对于多线程环境,信号会递送给其中的一个线程,这个被递送的线程是不确定的。每个线程存在自己的信号屏蔽字,可以通过如下函数设置: int pthread_...
  • 【windows线程线程资源创建与释放

    千次阅读 2016-12-02 15:19:54
    线程资源释放

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,788
精华内容 35,515
关键字:

was线程数