Database and Application Server Speed Issue - sql

I have a System which has application server and database server.
In the initial stage, both Database and Application Servers run in a same Physical Server. After that we have segregated these two servers in to separate segments in the network. i.e We have defined two separate VLAN s as application and database and put these two servers in to these two different vlans and given the required access permission through the firewall.
After the segregation we had a major issue regarding the slowness between application and db servers. We have checked the network connectivity and we couldn't find any issue from the network side for the slowness.
After that we have put both Application and DB servers in to one server like the implementation stage. Then the slowness issue has rectified.
I want to know what could be happen for this slowness.
Please advice me.
Thank you

Related

Symmetricds one way setup

I am a little confused on how to setup a one way 3 tier replication using symmetricds.
What I am trying to setup is something like this:
The company server is not connected to the internet and as you can see it's one way, and basically the final tier is a readonly database used by a web application .
How to setup this 2 steps replication?
Do I need to install Symmetric (java . etc) in each server?
Need some guideline here, thanks.
Zack,
It sounds like at a minimum you would want 2 SymmetricDS installations. One for your company server and intermediate server. If these are on the same local network a multi-homed (local node) setup would work. I would make the company server the master node and the intermediate a local node in the same installation. The final installation of SymmetricDS would be close to your DB internet server (you want a reliable JDBC connection here). Then I would setup 3 node groups (ex: server, intermediate, web). I would build group links:
intermediate pulls from server (for your data)
intermediate pushes to server (for heartbeats and config)
intermediate pushes to web (for your data and allows you to keep a firewall in place from outside connections in).
intermediate pulls from web (for heartbeats and config)
From here you can select your tables for replication and should be all set.
Take a look at the demo here to become more familiar with the basic configuration.
Start off by syncing your company and intermediate server.
Once you are syncing your company and intermediate server, add your third tier. Additional information on adding multiple tiers can be found here.
SymmetricDS uses JDBC drivers to communicate with the database. JDBC is not intended to run over the internet. This is why SymmetricDS should be installed local to each DB instance.
It is possible to point one SymmetricDS instance to two different DB's. You should only do this if both DBs exist on the same network. More information on adding multiple nodes here.

Verifying individual servers in a load balancing configuration

Here is my situation. Recently, my production environment has been burned by a few Windows updates that caused some production servers to stop responding. While we have since resolved the issue of both of the servers (which are in a load balancing configuration) getting updates on the same day, the question arouse, how do we check that the application running on each server is still working? If we call the load balancing IP, we may or may not hit a server that is working. So if the update takes out the application on one server, how do we know that this has happened
The only idea I have for this is to purchase 2 more SSL certificates and allocate 2 ip addresses and assign one to each server. This way I would be guaranteed that I would know each server is up (we have a 3rd party service pinging our servers). But I have to believe that there is a better way to do this?
Please note that I am a .Net developer by trade with only an extremely small smattering of networking and IIS experience, but I'm what my small company has. So please assume I don't know where a lot of stuff is and dumb down the answer.
Load balancer maintains live status of the servers ( based on timeouts or http health checks ). It uses this status to route the traffic only to active servers.
Generally, LBs have a dashboard through which you can check this status. If not, you can check it's logs.

How to access postgresql DB server that has "too many clients" and kill connections?

I was careless when I made some changes to my C# web service which accesses a postgresql database server at my work, and I forgot to close some connections I made. After testing the service many times over the past few days, I realized too late that I forgot to close my connections and now I can't access the server.
I've googled other solutions but they all involve me changing the max connection size in the postgres.conf file. The problem is that I don't have such a file on my own computer. I'm assuming the conf file is on the original machine that hosts the database server?
Is there any solution to this so that I can access the server again, and kill the old connections, without going to the original host machine of the database?
The only other options are:
to connect as the database superuser, which has superuser_reserved_connections other users cannot use; or
if you can, ssh in to the DB server and kill -TERM individual PostgreSQL worker backends. (on windows, that'd be rdp'ing in and using End Process on the backend postgres.exe processes, but it's much harder to pick a safe one to terminate on Windows, you'd want to use Process Explorer to examine the process heirachy and arguments so you can pick a regular backend).
In future you can prevent this by setting a connection limit on the user your appserver connects as; see ALTER USER.

SQL Availability Group Listeners in Windows Azure

We have a staging and production SharePoint farm housed within Windows Azure. All servers run Windows Server 2012. We're having the same issues in both environments, but for this question, I'll focus on the staging environment.
For the staging environment, I have several servers within the SharePoint farm and 2 SQL servers. All servers are located on the same subnet and affinity group. There is a DHCP server that hands out 192.168.X.X addresses for all servers on the subnet.
I've created a WSFC with both SQL servers as nodes. I've tried creating the cluster with an IP of an unused DHCP address (192.168.X.X) and with a link local address (using a PowerShell script to create the cluster found online from Microsoft). In both cases, the cluster IP is not accessible from any machine on the subnet. However, in both cases, the cluster appears to be up and restarting the active node pushes the passive node to the new active node. I think that this may be one of my root problems.
My final goal is to create an SQL Availability Group Listener for SharePoint to use for DB connections. With the cluster created, I am able to create an Availability Group in SQL Management Studio. I can see that it works: when rebooting the primary replica, the secondary turns to primary, all DBs are synced and up to date, etc. However, when I try to create the AG Listener, it fails with an error claiming that it cannot access the cluster or the cluster is not active.
I've read a lot online. Some claim that it's not possible to create AGs in Azure, others claim that this hotfix fixes things (http://support.microsoft.com/kb/2854082), and a few that claim it works when you set the Listener IP to the public endpoint. I've tried them all and haven't had any success. There's got to be some way to increase the reliability of SQL in a totally enclosed, Azure environment. Does anyone have any experience with this? Has anyone gotten it to work? If so, how did you do it? If not, is there another way to go about SQL availability?

Checking server status on multiple machines from C# application

I have multiple content servers on different machines. I need to check the status of every server. I'm concerned about things like disk size, priority etc.
One solution that I'm using now is to install a Window Service on each machine which regularly checks the server but I have to manually install the service on each server.
Is there any way I can get the server information like disk space from a WCF service or using a windows application? I want to create a single watcher for my servers as I have to add servers sometimes.
Look at windows WMI you can make remote calls to machines so long as you have permissions to do so. You will only have to run one service on one server that can connect to the others.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa394582(v=vs.85).aspx