Iurii Smyrnov created SYNCOPE-1199: -------------------------------------- Summary: Syncope performance: AnyObjetcTO's creation time grows with it's quantity Key: SYNCOPE-1199 URL: https://issues.apache.org/jira/browse/SYNCOPE-1199 Project: Syncope Issue Type: Bug Affects Versions: 2.0.4, 2.0.2 Environment: Syncope 2.0.2 and 2.0.4 + PostgreSQL 9; Jmeter; https://github.com/Talend/platform-services/tree/master/iam/idp Reporter: Iurii Smyrnov Attachments: Latency for 1000 create roles (directly syncope 2.0.4) no SCIM.csv, Latency for 1000 create roles (directly syncope 2.0.4).png, Latency for 1037 create roles (directly syncope 2.0.2) no SCIM.csv, Latency for 1037 create roles (directly syncope 2.0.2).png, Latency for 3000 create roles (directly syncope 2.0.2).csv, Latency for 3000 create roles (directly syncope 2.0.2).png
*AnyObjetcTO's creation time (latency) grows with it's quantity.* We create AnyObjetcTO entities (our custom RoleAT type). Testing results are attached (Latency in milliseconds). Note: We've tested PostgreSQL DB directly (without Syncope) and we've got stable AnyObjetcTO's creation time (not increasing). To reproduce the issue please do next : User Syncope 2.0.4 or 2.0.4 and + PostgreSQL 9 - you could test our environment IDP project . To install it you should have docker. To build IDP project: 1. build https://github.com/Talend/platform-services/tree/master/btools 1.1 cd ../platform-services/btools 1.2 call: gradle clean build publish 2. build https://github.com/Talend/platform-services/tree/master/microservices 2.1 cd ../platform-services/microservices 2.2 call: gradle clean buildDocker - it will create microservices docker image 3. build https://github.com/Talend/platform-services/tree/master/iam/idp 3.1 cd ../platform-services/iam/idp 3.2 call: gradle clean buildDocker - it will create idp docker image 3.3 cd ../platform-services/iam/idp/build 3.4 call: docker-compose up - start containers 3.5 call: docker-compose ps - you will see containers list like: Name Command State Ports ------------------------------------------------------------------------------------------------------------------------ build_db_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp build_idp_1 sh bin/start_tomcat.sh jpda Up 0.0.0.0:8000->8000/tcp, 8080/tcp, 8443/tcp, 0.0.0.0:9080->9080/tcp 4. wait for IDP is started: ←[33midp_1 |←[0m 16-Aug-2017 15:33:57.506 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 95832 ms 5. To test syncope performance you could use our test with jmeter: 5.1 install jmeter 5.2 our test https://github.com/Talend/platform-services/blob/master/performance-tests/src/main/resources/CreateRoleTestSyncope.jmx open by jmeter 5.3 update test: 5.3.1 quntity to create in jmeter here: CreateRoleTestSyncope -> ${__P(nbOfAccountsToCreate, 3000)} to set ${__P(nbOfAccountsToCreate, 1000)} for example 5.3.2 if you use UNIX - updated CreateRoleTestSyncope -> from ${__P(host, 192.168.99.100)} to ${__P(host, localhost)} - 192.168.99.100 host for Windows 5.4 results are saved in ../<jmeter_path>/bin/CreateRoleSyncopeResults.csv (you could update) in CreateRoleTestSyncope -> View Results Tree Report -> Filename 5.5 request is here: CreateRoleTestSyncope -> CreateRoleThread -> Loop Controller -> Create Role Request 5.6 run it 5.7 responses list you will see : CreateRoleTestSyncope -> View Results Tree Report 6. if you want use some other way to test here are options to create requests: 6.1 URI: http://192.168.99.100:9080/syncope/rest/anyObjects -for WIndows, for Unix http://localhost:9080/syncope/rest/anyObjects 6.2 http headers: 6.2.1 Content-Type / application/json 6.2.2 Accept / application/json 6.2.3 Authorization / Basic YWRtaW46cGFzc3dvcmQ= 6.3 verb: POST 6.4 body: { "plainAttrs":[ { "values":[ "TDP_DATASET_CERTIFY" ], "schema":"roleEntitlements" } ], "type":"RoleAT", "realm":"/", "@class":"org.apache.syncope.common.lib.to.AnyObjectTO", "auxClasses":["RoleATClass"], "name":"Role_Account_1" } -- This message was sent by Atlassian JIRA (v6.4.14#64029)