We have a SQL server that appears to be leaking memory. Memory consumption linearly increases over time until the server is completely out of memory, causing major performance issues.
The SQL server houses 6 small (average than 50MB) databases and one that is a little bit larger (about 2GB).
The server is currently a virtual server inside VMware 5.1. It has very light average workload (~1% cpu, <10 batch requests / sec, < .5 mb/s IO typical; spikes push to ~10% cpu, 300 batch request / sec, 5 mb/s IO).
Currently, it has 8GB allocated to the VM. Of this, 4GB is set to the maximum server memory in SQL server. The SQL server process, however, uses significantly more than that - usually around 6GB within 12 hours of a restart.
Apart from its primarily read workload, the server runs many SSIS packages to get data in and out to other systems within the corporate structure. This utilizes MySQL via ODBC (5.2.6 drivers installed) to connect to an internal MySQL cluster and ConnX to interface with OpenVMS systems.
OS: Windows 2012 SQL: 2012 Enterprise VM Settings: 4 CPU cores, 8GB, separate virtual volumes for OS, Data, and Logs.
Questions: 1) Any ideas on why the SQL Server process would not be following the limit set on the server? 2) Does anyone know a good way of profiling memory usage within SQL server? We can see that page life expectancy is dropping and more memory is being allocated to the process, but is there any way to see what SQL is allocating the memory to (i.e. procedure cache, cached results, etc).