Since I first came into contact with Cognos, I have never understood "affinity". What is "affinity? I once asked Cognos technical support, and he did not give me a very clear answer. The following content is translated by me according to a document. There must be many places that are not in place, I hope you will give me more advice.
Affinity connection
The affinity connection is used for requests. It is part of the Report service process (BIBusTKServerMain) (which can be understood as a thread ). Whether the affinity is assigned to a specific service based on a request or to another service in a distributed environment. Affinity is between requests and services. It is responsible for ensuring that requests are transmitted to the appropriate server for execution. There are three types of affinity requests: absolute affinity, high affinity, and low affinity.
Suggestion:
Do not try to modify the number of affinity connections unless you are very familiar with these parameters, because these settings have a great impact on the stability of Cognos. If you suspect a parameter, contact Cognos technical support.
By default, the ReportService affinity connection settings can meet the requirements of most Cognos BI application types (high = 1, low = 4 ). The maximum number of affinity connections for each report process cannot exceed 5 (including low affinity and high affinity ).
Note: An Affinity connection will be assigned to the request during the request (from the request submission to the end of the request ).
Absolute affinity request
In addition to high-affinity requests and Low-affinity requests, each report process also has absolute affinity requests. Absolute affinity requests can only be executed on specific report services, regardless of whether there is Server Load balancer. Canceling a report is the best example. You can cancel a report only when the report service is running.
An absolute affinity request is like his name-absolutely exists (By its very nature, absolute affinity requests are just that-absolute ), therefore, parameters for such requests are not included in the ReportNet parameter to avoid redundancy.
The absolute affinity request is responsible for creating associations between the client and the server to ensure that reports that run for a long time do not time out. Absolute affinity requests are used in the following operations: waiting, getting output, and releasing.
Example: When you cancel a running report, the absolute affinity connection is responsible for passing the cancel request to the process where the report is running.
Low-affinity requests
Low-affinity requests can be fully executed in any report process at the same efficiency. Low-affinity requests are independent and are not associated with other requests during system processing. Low-affinity requests include the first page of PDF and HTML reports.
Reports: REPORT query and Report Processing
Report authentication: Metadata retrieval and query Verification
Management: Test Data Sources, add objects (folders, jobs, scheduled tasks, etc.), and request Portals
Example 1: when a user requests an HTML report, any available report process can process the first page of output. The process uses a low affinity connection to process data. If the process to process this report is still available, the other pages to jump from this report will be processed with a high affinity connection. Otherwise, the process will be processed with the low affinity of other processes.
Example 2: when a user requests a report in PDF format, any available report process can process the report. The process uses a low affinity connection to process the report in PDF format.
High Affinity requests
High-affinity requests can be executed in any report process, but can be executed efficiently in a specific process. The best example of such requests is to execute the next page in an interactive report. If the request report process is still available, move the database cursor directly to obtain the data and display the page. That is to say, when the first page of the report is displayed, the information will be cached in the report process to prevent the subsequent high-affinity requests from generating too many report actions. These report actions include preprocessing SQL statements, analyzing report definitions, and so on. This information is obtained from the cached information of the report process.
If there is no high-affinity connection that can be allocated, the Administrator shuts down the computer, or a network error causes the current process to become unavailable, the request will be directed to another available process for execution. The requested page will still be displayed, but it will take a little longer.
Note: ReportNet does not perform Load Balancing for high-affinity connection requests.
The following requests are all requests with high affinity:
Connection in Report Viewer: Run, return
HTML report page navigation: Top, up, down, bottom
Sending options: save, save as, print, Email, and save as report View
Example 1: when a user requests an HTML report, a BiBusTKserverMain process is called or started. This process uses a low-affinity connection to process the first page displayed, when a user clicks the next page or the bottom link, the process uses a high affinity connection to process all the subsequent display pages. In fact, high affinity connections process all pages except the first page.
The original English text is attached below
What is an Affinity Connection?
An affinity connection is used for request assignment purposes and is an internal working part of a CRN report process (BIBusTKServerMain ). affinity refers to whether a request is assigned to a specific server or, a load-balancing mechanic can assign it to another server. affinity between request and server ensures that requests are routed to an appropriate computer for execution. there are three types of affinity: absolute, high, and low. for more information
On affinity connection types, please refer to sections 3.1, 3.2 and 3.3.
RECOMMENDATIONS:
Do not attempt to change the affinity connection settings unless you thoroughly understand them because they can severely impact Cognos stability and/or performance on the system. If in doubt, contact Cognos Customer Support
The default settings for Report Service affinity connections are usually adequate to handle most types of Cognos BI applications (High = 1, Low = 4 ).
The maximum number of total affinity connections per report process shocould NOT exceed 5 (I. e. sum of Low and High affinity connections)
NOTE: A request will be assigned to an affinity connection for the duration of the request (I. e. from request submission to request completion)
Absolute Affinity
In addition to low and high affinity connections per report process, there are also absolute affinity requests. these are requests that can only be executed by a specific report server, regardless of the load balancing used. the cancel report execution is a great example of this, you can only cancel a report on the server running it.
By its very nature, absolute affinity requests are just that-absolute, therefore tuning parameters for this type of request are not exposed in ReportNet to avoid redundancy.
Absolute affinity is used to create an association between the client and the executing server to ensure that long-running requests do not time out. an absolute affinity request is used with the following operations: wait, getOutput, and release.
Example: When a user cancels a running report, absolute affinity routes the cancel request back to the originating report process used to execute the report.
Low Affinity
A low affinity request is one that can be completed with the same efficiency by any report process. low affinity requests are considered independent without any relationship to other requests that were processed by the system. on-demand reports which limits des PDF, and the first page of an HTML report are good examples of low affinity requests.
Reporting: Report querying, Report processing
Report Authoring: Metadata retrieval, Query Validation
Administrative: Testing data source connections, Adding objects (folders, jobs, schedules, etc.), Refreshing portal page
Example 1: When a user runs an HTML report, any available report process (BIBusTKServerMain) can be used to render the first page. the process will use a low affinity connection for request assignment purposes. all other pages for that report will be assigned to a high affinity onnection of the same report process if available. otherwise if the high affinity connection of the same report process is not available it will relegate processing to a Low affinity connection.
Example 2: When a user runs a PDF report, any available report process (BiBusTKServerMain) can be used to render the report. the process will use a low affinity connection for request ssignment purposes to render the entire PDF report.
High Affinity
A high affinity requests is one that can be executed on any report process but wowould be most efficiently executed on a specific report process-page down on an interactive report is a great example of this. if the same report process is used, we scroll the existing database cursor, retrieve the data, and render the page.
In other words when the first page is rendered, information is cached by the report process so that subsequent High affinity requests can avoid overhead activities.
These activities include, preparing the SQL, parsing report specification needed to build the layout, etc.
This is accessed from cached information (I. e. report process memory ).
If that process is not available, because all high affinity connections are assigned or the administrator shut down the computer or there was a network failure, the request is routed to another available report process for execution. the next page can still be served up, although execution will be slower.
NOTE: ReportNet routes high affinity requests to a specific server regardless of the load balancing used ..
Report Viewer links: Run again, Return
HTML Report Navigation: Top page, Page up Page down Bottom page
Delivery Options: Save, Save As, Print, Email, Viewing
Example: When a user runs an HTML report, a BiBusTKserverMain process is spawned. that process will use a Low affinity connection to render the first page. when the user clicks on Page Down or Bottom, the High affinity connection will render all other pages (next pages and last ). in other words the High affinity connection will render all pages should t the First.