We use O10 Java ee. How to get dayly statistics to uses aggregates with application servers?

 1. List length count per request in oracle

2. Count request aggregate in oracle.

3. Count this aggregates list uses after request to oracle.


We need optimized code, but outsystems running as black box.

Hi Sergey, in the end of the day Outsystems Applications are built to work on top of an Application Server, typically JBoss for Java Stack, and an DBMS, typically Oracle or SQL Server.

In your case, you can get the information you need and much more through Oracle Enterprise Manager. You can have it easily installed on your Database server. See this link for more information: https://www.oracle.com/enterprise-manager/technologies/


>>In your case, you can get the information you need and much more through Oracle Enterprise Manager.


No. In my case OEM is not effective.
On the Oracle side, it is not possible to correctly identify queries and effectively find them in the code of Outsystems applications. For example, you can see the Oracle query id and its text, but it is not clear where it is located in the Outsystems code. Maybe for you who have a small app, OEM can help you.

We have an enterprise app with 8,000,000 units and 500 espaces. It is an impossible task for developers to find an aggregate that matches the query in Oracle in such a huge amount of code.

Statistics on aggregates must be maintained by the platform side itself. This can be easily implemented if you log its usage inside the aggregate. But apparently the developers of Outsystems do not care about the convenience of maintaining their platform.

OEM is installed. 

Another option you have is the Analytics reports on Lifetime.

It doesn’t store specific statistics down to the level you mentioned on your question, but it is very helpful when you need to track down and troubleshoot performance issues.

It has a tight map to the Apps code, and presents on charts and lists, amongst other insights, the slowest actions, screens and integrations. With its insights you can prioritise performance troubleshooting by the objects that are more offensive to your App, and then use OEM to track the performance of specific queries.

Have a look at this link: 

https://www.outsystems.com/evaluation-guide/what-kind-of-monitoring-and-analytics-does-outsystems-offer/

Around Database statistics, have you tried to use the Oracle Tuning Advisor?

https://docs.oracle.com/cd/B28359_01/server.111/b28274/sql_tune.htm#PFGRF028

I have used this combination of tools myself, including on big Apps built on top of Java, and it is very helpful.

Oracle Tuning Advisor is running in automatic mode. Every night  running OTA and optimize top query. But I need to optimize my java memory consumption. Lifetime not deploing in the production enviroment due to security restrictions of the bank.

Well, I would advise you to assess the possibility of having Lifetime installed. Maybe you can raise a support case to have Outsystems Support team helping with any inquiry or concern around security that the bank might raise.

Another good option is to use the reports generated by Service Center. You can find lots of insightful information to help you handle analyse and prioritise issues, such as, slow screens, slow queries, slow Ajax operations, etc.

We have 5 frontend servers. 126GB Ram each server. In runtime jboss-outsystems use 55GB on each server. Thats a lot memory in use runtime. 

I suspect that aggregates use the java machine memory inefficiently. Sometimes, developers create aggregates that pull 1000 values and 100 fields on each value from the database. 

Only one value from the received list is used. Or worse, one field of the same value.

I don't understand what prevents Outsystems developers from encapsulating the logging of these very objects in aggregate objects.

Hi Sergey,

If I understood your requirement correctly, you will get this capability when the bank migrates from Java to .NET.

As described in https://www.outsystems.com/forge/Component_Versions.aspx?ProjectId=25:

Added a flag to enable the ability to add a comment on the executed SQL, which states the location of the query on the code module name and server action/service action/screen action and Aggregate or Advance Query name. This is useful if you are using third-party tools to analyze SQL performance and to clearly be able to do a traceback where is the problem.

You may find the following discussion helpful:

- https://www.outsystems.com/ideas/4817/Reverse+tracking+SQL

Best regards,

Joao


Unfortunately, we will not migrate from java to the net stack

>>Added a flag to enable the ability to add a comment on the executed SQL, which states the location of the query on the code module name and server action/service action/screen action and Aggregate or Advance Query name. 

Installed and launched. How do I use it? Where is the documentation for this feature? How should I organize comments so that I can see them on the Oracle's side? I see that a parameter was added to the OSSYS_PARAMETER table Compiler.AllowQueryPatchComment = true. Then what?

Hi Sergey,

I'm a bit confused now. I pointed you to the Factory Configuration Forge component, which is available only for .NET. 

Since you are running on Java, the component is not supposed to work.

What I am missing?


Thanks. I installed Factory Configuration Forge for version 10 "all stack". My version platform outsystems 10.0.1005.2. It says it will work.


Ah, ok. I didn't notice that there was a Java version of the component. In that case, just follow the component's documentation: https://www.outsystems.com/forge/Component_Documentation.aspx?ProjectId=25&ProjectName=factory-configuration.

If that doesn't work, use the component Support tab to request help.


This is all extremely strange. There are environment settings in OSSYS_PARAMETER. Not only do they not all exist, but they do not appear in official documentation. But they work at the platform level. I now need to understand how to develop with this parameter in mind. Outsystems, where are you?

Hi Sergey,

Please open a ticket with Support. 

The Community is meant for people to voluntarily share their knowledge to help other Community members. There's no guarantee of response, yet your latest comment suggests this doesn't match your expectation. 

I not have support from Outsystems. We have support from FICO. But support only technical errors. This issue is not covered by the maintenance agreement.