How do I tweak GlusterFS performance? - filesystems

I have 2 dedicated servers with the following specs:
- E3 1270V3 CPU
- 32GB RAM
- 960GB SSD
- 1Gbps private ethernet network.
Using local drives, dd tests usually in the range of 600MB/s, which is very good.
I recently setup a GlusterFS replicated cluster, by installing both glusterd and glusterfs clients on each machine. The dd test result of the global namespace dropped to 50MB/s, and whenever I try to run my application which requires high read/write performance, the application simply crashes.
How do I tweak GlusterFS for better performance using 2 machines replicated cluster?

Related

Effect of Network Performance on Database (RDS)

I would like to know the effect of Network Performance (also the exact name for the metric used by AWS RDS instance types) on a DB.
I am loading Graph database with data at scale using parallel processing (multiple Pods in Kubernetes).
I noticed that by simply changing from one RDS instance type to one more powerful, and monitoring the DB metrics in AWS console, performance is doubled.
Performance figures that are doubled are:
VolumeWriteIOPs - doubled
Network Throughput - doubled
VolumeReadIOPs - tripled
As the better instance type has more CPU, RAM, Disk, and possibly network performance (i believe there is an 'invisible' network performance tiering that is not shown in the instance specs), I suppose my question really is -- if there is a (hypothetical) instance with same CPU, same RAM, same disk performance, what difference does network performance alone make to a DB?
Do DBs and RDS DBs process everything slower if the network performance is lower?
Or does it respond at the same speed, but only serve less connections (making the others wait)?
In my use case they are Kubernetes Pods which are writing to the DB, so does it serve each Pod more slowly, or is it non-responsive above a certain point?

Postgres 9.4.5 Upgrade to 9.5

I have a Postgres (version 9.4.5) database running on CentOS 6.7.
How would I be able to upgrade my current Postgres distribution to v9.5.x?
This must be done with minimal damage to the data as well as minimum down time as this server is currently in production.
I have considered installing a separate instance of Postgres 9.5 and swapping the balancer to point to the new instance. Then in the background perform sequential inserts. However this would cause problems with serialized columns. It is definitely not the ideal scenario.
For anyone curious, this change is being done because Postgres 9.4.5 does not have a method to perform an upsert without potential data loss and/or concurrency errors.
It should be noted that the database is currently 300GB in size and is mainly used for data warehousing.
The hardware specifications are:
CPU: http://ark.intel.com/products/83356/Intel-Xeon-Processor-E5-2630-v3-20M-Cache-2_40-GHz
RAM: 128GB
STORAGE: 1.5TB PCIE SSD

Docker container IO performance

I am trying to investigate the IO performance overhead of docker so I created a mysql docker container on a specific machine and I ran the sysbench mysql benchmark to measure IO performance. Sysbench basically executes some read/write transactions over a period of time and then outputs the number of completed transactions and the transactions/second rate.
When I run the benchmark on the native machine, I get a 779.5 transactions per second. When I run the benchmark in a mysql container, I get 336 transactions/second. Almost half the number of transactions per second. Is this a normal performance overhead of docker? This is a huge disadvantage for running the database in a container in production systems, especially for IO/database intensive applications
Are you using a Docker volume for the database files? By default, file writes inside the container will be made to the copy-on-write filesystem, which will be inefficient for database files. Using a volume will mean you can write directly to the host filesystem.

Selenium Grid server

what is the ideal server requirement for running parallel tests we have 100+ automation tests to run.
Currently my server is intel quad core 1.8GHz with 32 GB memory. and i am running hub and one node (with 10 maxInstances of firefox browsers) on that server.
We plan to purchase another server. So is it better to have mediocre multiple servers or just one high end servers with several VMs running as nodes?
Technically it does not really matter. Both solutions will work.
Scaling horizontally (more servers) should be cheaper overall and more fault-tolerant than scaling vertically (one big server). Also adding new capacity would be easier since you already integrated multiple nodes.

IIS and SQL on same machine best performance

There are similar questions out there on this topic, such as When can I host IIS and SQL Server on the same machine? but I'm looking for more.
I'm looking for the most optimal way to setup IIS and SQL server on the same machine.
So far, I've got the following:
Use CPU affinity masks for both SQL and IIS/ASP to isolate the two on separate cores.
Configure SQL to reserve less RAM so that it leaves free memory for IIS/ASP.
Recycle app pool aggressively.
SQL database and log files on different disks.
So my questions are:
What ratio should CPU's be masked? Are we talking 1 cpu for web, and 3 for SQL, or split down the middle?
Same as above, what ratio? If I have 4GB of ram, Should I give SQL 3GB and IIS 1, or 2GB each?
I have three Hard Drives. How should I split everything up? I'm assuming 1st drive: OS & IIS, 2nd drive: SQL Installation & SQL Logs, 3rd drive: SQL Data
This is going to be highly application dependent.
The only thing from the first 4 suggestions I would use is number 4. Install SQL on the system drive and put the databases on D:, the log files on E:.
I wouldn't do any of the other things, especially aggressively recycling the application pool. You'll just eat up CPU time unnecessarily. Unless the application is leaking memory you gain nothing from aggressively recycling the app pool.
You should monitor your application and see what makes sense.
Source: I am head of Windows infrastructure for a web hosting company and have designed and implemented some of the biggest Microsoft based web infrastructures in the world.

Resources