Saturday, 27 August 2022

How to Increase the max_map_count Kernel Parameter in Linux to Optimize Vector Server Performance

If you're running a Vector Server or any application that relies heavily on memory-mapped areas, you might encounter issues related to running out of map areas. This problem often stems from a default kernel parameter setting that limits the number of map areas available. Fortunately, you can address this issue by increasing the max_map_count kernel parameter. 

How to Increase max_map_count:
1. Edit the sysctl.conf File

vi /etc/sysctl.conf
Add the following line to the file:
vm.max_map_count=map_count

Replace map_count with an appropriate value based on your system’s memory. As a general guideline, set map_count to approximately 1 per 128 KB of system memory. For instance, on a system with 256 GB of RAM, you might set:

vm.max_map_count=2097152

2. Reload the Configuration

After updating the sysctl.conf file, apply the new settings by reloading the configuration:
sudo sysctl -p

3. Verify the New Setting
cat /proc/sys/vm/max_map_count

This command should display the updated value you set in the sysctl.conf file.
4. Restart Vector

sudo systemctl restart vector


or whatever service management command is appropriate for your setup.

How to Remove Exited Docker Containers

Docker containers can sometimes exit unexpectedly or remain in an "exited" state, taking up valuable system resources. In this guide, we'll explore different methods to identify and remove these exited containers.
Identifying Exited Containers
First, let's see how to identify exited containers. You can use the following command to list all containers, including exited ones:
docker ps -a
To specifically filter for exited containers, use:
docker ps -a | grep "Exited"
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                     PORTS                                        NAMES
9b65cedfc4b3        d0eadfcacdc2               "/bin/sh -c 'apt-get…"   10 months ago       Exited (1) 10 months ago                                                stupefied_kirch
c3edc0a8c3c6        7aa9bc2b797e               "/bin/bash"              10 months ago       Exited (0) 10 months ago                                                wonderful_mirzakhani
7f20f353fa7b        7aa9bc2b797e               "/bin/sh -c 'apt-get…"   10 months ago       Exited (1) 10 months ago                                                zen_payne


Methods to Remove Exited Containers

Using docker container prune:
simplest way to remove all stopped containers is using the docker container prune command:
docker container prune -f
Deleted Containers:
9b65cedfc4b37b5754e0a16709b387a2c5c39999412908be0a4f6c23da72c29d
c3edc0a8c3c6c2d46712637c58be22e801f46a140608c89fb0ff38d968837a06
7f20f353fa7b7a7c3ae3b6780bfc96021792a9761d99aff88f4503f30df53c95
Total reclaimed space: 310.1MB


The -f flag forces the removal without asking for confirmation. This command will:
1.Remove all stopped containers
Show you which containers were deleted
Display the total space reclaimed

2. Removing Specific Containers
If you want to remove a specific exited container, you can use its container ID:
docker rm <container_id>

3. Removing All Exited Containers
To remove all containers that are not running, use:
docker rm $(docker ps -a -q -f status=exited)

Verifying the Cleanup
After removing the containers, you can verify that all exited containers have been removed:
docker ps -a | grep "Exited"

Troubleshooting Dispatcher Issues in Oracle Database

Troubleshooting Oracle Dispatchers involves diagnosing issues related to performance, connectivity, or server processes. Dispatchers are crucial for routing client requests to shared server processes, and any issues with Dispatcher config  can affect overall database performance and client access. Below is a detailed guide on how to troubleshoot Oracle Dispatchers, including common issues and solutions.
1. Dispatcher Process Not Starting
Symptoms:
    The Dispatcher process does not appear to be running.
    Errors in the log files related to the Dispatcher process (e.g., ORA-12500: TNS:listener failed to start a dedicated server process).
Where to Look:
    Listener Logs: Check the Oracle Listener log (listener.log) for errors related to Dispatcher processes.
    Database Alert Log: Check the database alert log for any errors related to process startup or configuration.
    V$DISPATCHER View: Query the V$DISPATCHER view to check if the Dispatchers are registered with the database.
Common Causes and Solutions: Listener Configuration Issue: Ensure that the listener.ora file is correctly configured and the listener is running.
Incorrect DISPATCHERS Parameter: Double-check the DISPATCHERS parameter in spfile.ora or init.ora for any syntax errors or incorrect configurations.
Example of a correct entry:
     DISPATCHERS = '(PROTOCOL=TCP)(SERVICE=orcl)(DISPATCHERS=4)'
     
2. Dispatcher is Overloaded or Not Handling Requests Efficiently
Symptoms:
    High CPU usage by Dispatcher processes.
    Slow client responses or timeout issues.
    Clients experience delays in receiving responses due to Dispatcher bottlenecks.
Where to Look:
SELECT * FROM V$DISPATCHER;  To monitor the number of active Dispatcher processes and their load.
SELECT * FROM V$SHARED_SERVER;Check for an imbalance between Dispatchers and shared servers.
Check if sessions are waiting for Dispatchers to process requests.
SELECT SID, SERIAL#, STATUS, EVENT FROM V$SESSION WHERE EVENT LIKE 'dispatcher%';
Common Causes and Solutions:
Insufficient Dispatchers: If there are more requests than available Dispatchers, they will queue up, causing delays. Increase the number of Dispatchers using the ALTER SYSTEM command.
ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(SERVICE=orcl)(DISPATCHERS=6)' SCOPE=BOTH;
Imbalance Between Dispatchers and Shared Servers: Check if there are enough shared server processes to handle the incoming requests. Adjust the SHARED_SERVERS parameter accordingly.
ALTER SYSTEM SET SHARED_SERVERS=10 SCOPE=BOTH;

3. Clients Cannot Connect to the Database (ORA-12500, ORA-12545, ORA-12514 Errors)
Symptoms:Clients cannot establish a connection to the database.
    Errors like:
        ORA-12500: TNS:listener failed to start a dedicated server process
        ORA-12545: Connect failed because target host or object does not exist
        ORA-12514: TNS:listener does not currently know of service requested in connect descriptor.
Check Listener Log: Look for any connection or listener-related errors in the listener log & Alert Log
Common Causes and Solutions: Listener Not Running or Misconfigured: Ensure the listener is up and properly configured. Restart the listener and ensure the correct service is registered.
Incorrect SERVICE_NAME or SID: Verify that the SERVICE_NAME or SID specified in the tnsnames.ora file or connection string is correct.
Listener Unable to Start Shared Server: Ensure that the listener is correctly configured to handle shared server processes. In the listener.ora file, ensure the SID_LIST includes the shared server configurations.

4. Dispatcher Hanging or Not Responding to Client Requests (ORA-12535)
Symptoms:
    Clients experience long delays or timeouts while waiting for responses from the Dispatcher.
    Errors like ORA-12535: TNS:operation timed out or client hangs.
Common Causes and Solutions:
    Network Issues: Check for network latency or firewalls blocking communication between clients and Dispatchers. Use network diagnostic tools like ping or traceroute to verify the path.
    Increase Timeout: Increase the timeout values for client connections and Dispatchers to allow more time for processing.
        Adjust the SQLNET.INBOUND_CONNECT_TIMEOUT parameter if necessary.
    ALTER SYSTEM SET SQLNET.INBOUND_CONNECT_TIMEOUT=180;
    Dispatcher Load: Check if Dispatchers are overloaded and adjust the number of Dispatchers or shared servers as needed.

5. Poor Performance or Latency in Dispatcher Handling
Symptoms:
    Slower performance during peak usage times.
    Latency in query processing or client response time.
Common Causes and Solutions:
    Increase Dispatcher or Shared Server Processes: Increase the number of Dispatchers if the load is high.
    ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(SERVICE=orcl)(DISPATCHERS=8)' SCOPE=BOTH;
    Review System Resources: Ensure the system has enough CPU, memory, and disk space for the expected load. Overutilization of system resources can cause slow response times.
    Review Execution Plans: Slow queries can cause delays in processing. Use SQL Trace and Explain Plan to identify and optimize slow queries.

6. General Connection Issues (ORA-12170, ORA-12541)
Symptoms:
    Clients fail to connect and report network-related errors like ORA-12170: TNS:Connect timeout occurred or ORA-12541: TNS:no listener.
Common Causes and Solutions: Listener Configuration: Ensure that the listener is properly configured and the required services are registered. Restart the listener to fix any issues.
Network Configuration: Ensure there are no firewall or network configuration issues preventing the client from reaching the database server.