[jboss-dev] App Server Startup Time and Memory Footprint Comparisons

Bill Burke bburke at redhat.com
Thu Dec 17 10:37:27 EST 2009


I'll look into hacking something to see if it actually helps.

Ales Justin wrote:
> https://jira.jboss.org/jira/browse/JBDEPLOY-229
> 
> Bill Burke wrote:
>> A simple *initial* solution could be to add a 
>> addDeployers(List<Deployer>) method and only do the sort once.
>>
>> WebServices adds like 29 deployers.  I'm not saying this is bad, just 
>> that there's no reason the sort can't be done for those 29 deployers 
>> once and only once.
>>
>> Maybe even create a bean:  DeploymentList and each subsystem (EJB, 
>> WebServicdes, etc.) could use that to deploy all their deployers.
>>
>> Then, after this simple thing is done, you can talk the harder problem 
>> of sorting.
>>
>> Ales Justin wrote:
>>> This is the code that sorts it.
>>> * 
>>> http://anonsvn.jboss.org/repos/jbossas/projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java 
>>>
>>>
>>> Any suggestion how to fix it is welcome.
>>>
>>> Andrew Lee Rubinger wrote:
>>>> I have a test which confirms it.
>>>>
>>>>    @Test
>>>>    public void testAddLotsOfDeployers() throws Throwable
>>>>    {
>>>>       // Get the MainDeployer
>>>>       MainDeployer mainDeployer = (MainDeployer) 
>>>> getKernel().getController().getInstalledContext(NAME_MC_MAIN_DEPLOYER)
>>>>             .getTarget();
>>>>       TestCase.assertNotNull(MainDeployer.class.getName() + " 
>>>> instance was not installed into MC", mainDeployer);
>>>>
>>>>       // Add Deployers
>>>>       for (int i = 0; i < 100; i++)
>>>>       {
>>>>          // Install a deployer
>>>>          final Deployer deployer = new AbstractDeployer()
>>>>          {
>>>>
>>>>             @Override
>>>>             public void deploy(final DeploymentUnit unit) throws 
>>>> DeploymentException
>>>>             {
>>>>                //NOOP
>>>>             }
>>>>          };
>>>>          final String deployerName = 
>>>> deployer.getClass().getSimpleName() + i;
>>>>          final BeanMetaDataBuilder bmdb = BeanMetaDataBuilder
>>>>                .createBuilder(deployerName, 
>>>> deployer.getClass().getName());
>>>>          getKernel().getController().install(bmdb.getBeanMetaData(), 
>>>> deployer);
>>>>       }
>>>>    }
>>>>
>>>> That takes 163s on my machine.
>>>>
>>>> S,
>>>> ALR
>>>>
>>>> On 12/17/2009 10:03 AM, Dimitris Andreadis wrote:
>>>>> 2 seconds doing Deployer sorting??? either a bug or a bad measurement.
>>>>>
>>>>> Bill Burke wrote:
>>>>>> I just did some profiling. 30% of boottime if you remove deploy/
>>>>>> directory (30% is 6-7 seconds out of 18) is because of Deployer
>>>>>> sorting. WebServices adds a TON of deployers, and a sort is happening
>>>>>> after each add of each deployer.
>>>>>>
>>>>>> Ales Justin wrote:
>>>>>>>> Ales told me he had a tool which draws out the dependencies of all
>>>>>>>> beans in the AS. This needs some work, but I think it could be used
>>>>>>>> in helping to (a) identify which beans need dependency annotations
>>>>>>>> and (b) check whether all dependencies are correct (e.g. no 
>>>>>>>> cycles)...
>>>>>>>
>>>>>>> http://in.relation.to/Bloggers/MicrocontainerToolsGrapher
>>>>>>>
>>>>>>> MC 2.2.x will include some of the problems we've encountered and
>>>>>>> tackled:
>>>>>>> * ControllerState::equals
>>>>>>> * MDR's ScopeKey sorting
>>>>>>> * beans per class indexing
>>>>>>> * annotation plugin matching
>>>>>>> * ...
>>>>>>>
>>>>>>> After I include new MC 2.2.x in AS, I'll spend the time identifying
>>>>>>> the potential lazy & on_demans beans + other tweaks.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com



More information about the jboss-development mailing list