Search Results

Search found 16560 results on 663 pages for 'far'.

Page 173/663 | < Previous Page | 169 170 171 172 173 174 175 176 177 178 179 180  | Next Page >

  • sSMTP Unable to send message using external mail server SMTP

    - by OrangeGrover
    I'm trying to finish up my Nagios install by having it email me. It was emailing me using /bin/mail so it always got sent to my spam folders. I installed sSMTP to try to send a request to my work's email server to be able to send out a message from an authenticated user. Here is my /etc/ssmtp/ssmtp.conf file: mailhub=10.200.120.148:25 UseTLS=NO AuthUser= [email protected] AuthPass=PASSWORD So far I've been using the following command, and it will still arrive to my email inbox as root@localhost which causes it to go to my spam folder (with the exception of one email provider I have). cat message |ssmtp [email protected] I've looked at a few examples online, and they all seem to have pretty much the same as me. Does anybody see the any mistakes that I'm making? Just to clarify, [email protected] is a user on the mail server that my work uses.

    Read the article

  • Invalidating unused ssh keys

    - by JH
    I am using one ssh account for all my Subversion users. They send me their public keys and I put them in .ssh/authorized_key of the svn account, then they can check out the code from Subversion using ssh tunnel. So far everything works fine. The problem though is that I want to invalidate keys that have not been used for some time (say one month). Does anyone know a way to make sshd log the public key when a user signs in? Thanks.

    Read the article

  • IMAP/POP won't send allow emails to outside- New Dell PowerEdge 7310 running SBS 2011

    - by user779887
    I have a brand new out of the box Dell PowerEdge T310 running SBS 2011. Our employees at our remote offices can't send emails to recipients outside of our own domain. The workstations at the same location as the server aren't having any problem. I would at this time like to say "Thanks a lot" to the super-minds at Microsoft for protecting our email server from rogue computers attempting to send fake emails. (Silly me I thought proper login and password conventions would handle that.) I know this is something dealing with relaying but thus far nothing from any posts I've read have changed anything. Honestly, if someone is crafty enough to guess one of our login/password combos, let them send emails through our server I don't care!

    Read the article

  • What is causing a vm to exhibit packet loss?

    - by d03boy
    We have a pretty nice piece of hardware set up to run multiple virtual machines in vmware and one of the vm's is an instance of Windows Server 2003 running SQL Server 2005. For some reason we occasionally see 10-20 seconds of straight packet loss to this machine from remote machines (my workstation) as well as other vm's on the same physical hardware. I am using PingPlotter to keep a close eye on the packet loss. So far we've turned off flow control on the NIC but we are already running out of other things to try. What might be causing this and how can I identify the problem? Note: We also have another server with a very similar configuration with the same type of problem to a lesser extent (because its not used as heavily?)

    Read the article

  • Wordpress Multisite- How to restrict a non-wordpress page only to one domain

    - by yibe
    I am running three blogs from a wordpress multisite. Currently, I am developing a separate, non wordpress application. I want to link this application with blog1. I put the application in the subfoler of my root directory (The Wordpress multisite is installed in the root). I linked the application in the menu of blog1. So far so good. But, it is possible to access the application from all the three blogs. I want the application to be accessible only from blog1-domain/my-app/ but when I tried blog2-domain/my-app, it just opened normally. Generally, the application is accessible from all the three domains followed by /my-app. I don't think it is proper to go this way. Then, what can I do to restrict my app to be accessible only from a my blog1-domain/my-app ? Or am I not using a good blog structure?. I am open to all kind of suggestions. Thank you for your help.

    Read the article

  • SonicFileFinder 2.2 Released

    - by WeigeltRo
    My colleague Jens Schaller has released a new version of his free Visual Studio add-in SonicFileFinder, adding support for Visual Studio 2010. Announcement on his blog Download on the SonicFileFinder website As far as I can tell, there are no new features compared to version 2.1, but good to know that this add-in is now available for VS2010. For those who a wondering what SonicFileFinder is about: SonicFileFinder implements a command for searching and opening files in a Visual Studio solution, which is very nice especially in large projects. This may sound familiar to users of JetBrain’s ReSharper, which has a “Go To File” feature. But in my opinion SonicFileFinder does a better job overall: While ReSharper (4.5) does a prefix search by default, SonicFileFinder searches for any occurrence of the entered text inside a file name. In a long list of file names (e.g. all starting with “Page…”), this allows me to focus on the part that makes the difference (e.g. “Render” in PageRenderBuffer.cs). In ReSharper I would have to type “*Render*”, which can be shortened to “*Render” (which isn’t even correct). Note that SonicFileFinder does support wildcards, of course.   SonicFileFinder remembers the last input (and thus the last result list) without a noticeable delay of the popup. If I want to search for something different, I can type right away, so this behavior doesn’t slow me down. But where it really shines is when I’m not even sure what file exactly I was looking for – I open one file, notice that it’s not the one I want, re-open the pop-up dialog and now I can choose another one from the result list without re-entering the search text. SonicFileFinder allows me to open multiple files at one (nice for service interfaces and implementations). SonicFileFinder lets me open either a Windows Explorer or Command Line window in the directory containing a specific file.

    Read the article

  • Create restricted user on Debian server

    - by James Willson
    I want to create a user account for each of the key programs installed on my debian server. For example, for the following programs: Tomcat Nginx Supervisor PostgreSQL This seems to be recommended based on my reading online. However, I want to restrict these user accounts as much as possible, so that they dont have a shell login, dont have access to the other programs and are as limited as possible but still functional. Would anyone mind telling me how this could be achieved? My reading so far suggests this: echo "/usr/sbin/nologin" >> /etc/shells useradd -s /usr/sbin/nologin tomcat But I think there may be a more complete way of doing it. EDIT: I'm using debian squeeze

    Read the article

  • What are the best practices for service accounts?

    - by LockeCJ
    We're running several services in our company using a shared domain account. Unfortunately, the credentials for this account are widely distributed and being used frequently for both service and non-service purposes. This has led to a situation where it is possible that the services will be temporarily down due to this shared account being locked. Obviously, this situation needs to change. The plan is to change the services to run under a new account, but I don't think this goes far enough, as that account is subject to the same locking policy. My questions is this: Should we be setting up the service accounts differently than other domain accounts, and if we do, how do we manage those accounts. Please keep in mind that we are running a 2003 domain, and upgrading the domain controller is not a viable solution in the near term.

    Read the article

  • Big Data for Retail

    - by David Dorf
    Right up there with mobile, social, and cloud is the term "big data," which seems to be popping up lots in the press these days.  Companies like Google, Yahoo, and Facebook have popularized a new class of data technologies meant to solve the problem of processing large amounts of data quickly.  I first mentioned this in a posting back in March 2009.  Put simply, big data implies datasets so large they can't normally be processed using a standard transactional database.  The term "noSQL" is often used in this context as well. Actually, using parallel processing within the Oracle database combined with Exadata can achieve impressive results.  Look for more from Oracle at OpenWorld as hinted by Jean-Pierre Dijcks. McKinsey recently released a report on big data in which retail was specifically mentioned as an industry that can benefit from the new technologies.  I won't rehash that report because my friend Rama already did such a good job in his posting, Impact of "Big Data" on Retail. The presentation below does a pretty good job of framing the problem, although it doesn't really get into the available technologies (e.g. Exadata, Hadoop, Cassandra, etc.) and isn't retail specific. Determine the Right Analytic Database: A Survey of New Data Technologies So when a retailer asks me about big data, here's what I say:  Big data refers to a set of technologies for processing large volumes of structured and unstructured data.  Imagine collecting everything uttered by your customers on Facebook and Twitter and combining it with all the data you can find about the products you sell (e.g. reviews, images, demonstration videos), including competitive data.  Assuming you could process all that data, you could then personalize offers to specific customers based on their tastes, ensure prices are competitive, and implement better local assortments.  It's really not that far off.

    Read the article

  • .htaccess - permissions forbidden

    - by user1732521
    I have an error with a new virtual host that I can't figure out.. My .htaccess doesn't have web access (403). [Thu Oct 31 17:51:01 2013] [crit] [client ] (13)Permission denied: /srv/data_disk/www /site.dev/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable I have set the permissions for the complete htdocs folder to 755, and to owned by my regular user and group (www-data). I have other vhosts set up with the same user and lesser permissions (rw-rw---) on the .htaccess. The virtual hosts are also setup in the same way.. as far a I can tell.. Thanks!

    Read the article

  • Home network with Windows 7 as router

    - by Michael
    Background: I have tried to use routers, but so far all of them can't handle the bandwidth, number of connections eventually limited by the hardware resources, so overall the home routers are decreasing the internet speed. I went through DD-WRT and stuff like that. Question: What I want is to use my Windows7 PC as router. It has 2 LAN cards. I'm going to connect to this router another desktop 2 pcs and notebook through wireless router. The main question is what is the most efficient way to turn this Windows7 box(and I need Windows for native NTFS support) into router with NAT/Routing/Firewall functionality? Is there any routing software recommended for this purpose or I should just use windows native "Internet Sharing"? I'm going to run SIP phones in the LAN, so I need friendly NAT(Full cone perhaps). Also I'm going to have FTP server on that Windows7 "server" PC. As firewall I'm thinking about Comodo. Need to drop all incoming, unless explicitly allowed.

    Read the article

  • CentOS vs. Ubuntu

    - by DLH
    I had a web server that ran Ubuntu, but the hard drive failed recently and everything was erased. I decided to try CentOS on the machine instead of Ubuntu, since it's based on Red Hat. That association meant a lot to me because Red Hat is a commercial server product and is officially supported by my server's manufacturer. However, after a few days I'm starting to miss Ubuntu. I have trouble finding some of the packages I want in the CentOS repositories, and the third-party packages I've tried have been a hassle to deal with. My question is, what are the advantages of using CentOS as a server over Ubuntu? CentOS is ostensibly designed for this purpose, but so far I would prefer to use a desktop edition of Ubuntu over CentOS. Are there any killer features of CentOS which make it a better server OS? Is there any reason I shouldn't switch back to Ubuntu Server or Xubuntu?

    Read the article

  • Unable to SSH to EC2

    - by Walker
    I downloaded the cert-xxx.pem and pk-xxx.pem files and also the keypair.pem and moved it all to the /.ssh folder on my Ubuntu client machine. this is what I get when I try to SSH with -v at the end debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /root/.ssh/identity debug1: Trying private key: /root/.ssh/id_rsa debug1: Trying private key: /root/.ssh/id_dsa debug1: No more authentication methods to try. Permission denied (publickey). I am new to administering servers and I want to know if I should be trying to convert the pem files to id_rsa and id_dsa. I am not really sure if that is possible but I don't know how else to get the id_rsa, id_dsa from those pem files or if there is any work around. I managed to get access to EC2 the first time and this is my second try and I am unsuccessful so far. Any help is appreciated. regards Walker

    Read the article

  • Outlook receives winmail.txt attachment instead of Excel, PowerPoint or Word attachments from Lotus notes senders

    - by Philippe
    Ok so the title pretty much says it all. We are offering a Hosted Exchange solution for our customer. Everything is working fine except for one customer complaining that he is receiving winmail.dat or winmail.txt attachments instead of the actual Word Excel or PowerPoint attachments he should be receiving, only when these messages come from a specific European senders, that is using Lotus Notes. I know that usually the problem is coming from Outlook senders to other mail clients, but this is not the first they inform me of this but I can't find anything on the matter so far. Has anyone ever gotten and solved this problem? If not, does anyone have any idea regarding this? I had solved this problem a few months ago, by upgrading Outlook to SP2 and then uninstalling it using the Service Pack removing tool of Microsoft. It seems that only the latest SP1 version could work but not the SP2. The problem is that now nothing is working at all. Thank you for your help, Philippe

    Read the article

  • Understanding how Tracert works

    - by iridescent
    From what I gathered so far, Tracert works by sending 3 ICMP echo messages. Starting with a TTL value of 1. For each router the packet encounters, the TTL value will be decremented. For the 1st router, 1-1 = 0, so an ICMP "time exceeded" message will be sent back to the sender machine. Next, the TTL value will be incremented to 2 by the sender machine and the cycle repeats for the 2nd router (2--1--0) and so on. Please correct me if my undestanding is flawed. I am curious as to why the ICMP "time exceeded" message isn't displayed by Tracert in Command Prompt since it is in fact an error message ? The cycle simply proceeds on. Thanks.

    Read the article

  • Essential roles for web application team

    - by jromero
    Some friends of mine came up with an idea for a web application which we (so far) think could be great. I made the analysis and all the early stages of the development process and I'm about to start the coding. I'm talking about something that is barely a mid-level project, so I consider one developer (myself) should be enough. The thing is that we are trying to assign roles to each one of us so we can be focused on our duties and have clear our responsibilities within the team. We are a crew of four people, three of us (my friends) are business people who would do the marketing, customer relationship, management and accounting stuff and I'm basically the developer. I have in mind to get them involved into the development process by giving them documentation to write and use them as testers, all of that besides the management duties they have. Perhaps someone out there have been in the same situation, so I would appreciate if the experience is shared so we can effectively give ourselves positions in the project based on what I explained above. Which are the essential roles or the optimal team layout so the idea can be developed successfully? The question is not strictly about programming, but it's related to build a software entrepreneurship beyond the code, that is something that I'm sure plenty of us are looking. Any help is really appreciated! Regards.

    Read the article

  • How do I enable PHP’s flush() with nginx+PHP-FPM?

    - by abrahamvegh
    I’m using nginx with PHP-FPM (APC is installed). I need PHP’s flush() to work. Is this possible? Things I’ve tried so far: Disabling all output buffering in php.ini, as well as output compression. Disabling gzip in nginx’s configuration. Setting nginx’s fastcgi_* buffering settings and fastcgi_max_temp_file_size to zero. I’m sure I must be missing something, since I’ve run across many posts here and elsewhere where people claimed they’ve got it working, but I’m having no luck, it would seem.

    Read the article

  • Loss of iPod nano connection via VirtualBox and iTunes

    - by user69245
    I use VirtualBox 4.12 with Ubuntu 12.04, and up until a couple of days ago I was able to sync my iPod nano, my iPod Classic and my iPad via Windows XP and iTunes. A few days ago, when I connected the iPod nano, iTunes told me it was in recovery and I'd have to Restore it. I did this, but when it started up again I was told it was still in recovery. I went through this loop a few times, and then I got it to work again, and synched successfully. Since then, I have been unable to sync my iPod nano, although both iPod Classic and iPad work fine. I have successfully synched the iPod on a laptop with Windows XP since then, but each time I connect it through VirtualBox I get the same error message. I have tried disabling the iPod service in (the VirtualBox version of) Windows, and find that the iPod isn't being mounted as a disc drive, which is what happens in Ubuntu, and on my Windows XP laptop. I've tried changing USB leads, and I've also booted Windows XP on my Ubuntu machine, and here iTunes recognises the iPod nano. As far as I know, I made no changes to the configuration of VirtualBox between the time it was synching satisfactorily and the time it failed. I don't think iTunes is at fault here, as the same version of iTunes syncs with the iPod nano on two different computers running Windows XP - I think it may be the way XP running in VirtualBox handles the mounting of the iPod. Any suggestions?

    Read the article

  • Welcome files are not loaded! Need help with Railo, mappings and J2EE configuration!

    - by mrt181
    I have installed a J2EE Server (tried it with Glassfish3, Tomcat6 and Resin4) on Win7 64bit and deployed Railo3.1. I have then added a virtual host to the J2EE server, i.e. Resin: <host host-name="railo"> C:/resin/webapps/railo In the Railo Admin i have added this mapping: Virtual Physical / C:/webapps/ When i access http://railo:8080/ my index.cfm welcome file in C:/webapps/ is loaded (index.cfm is definded in Railos web.xml). When i try to access http://railo:8080/test which contains the same index.cfm i get an 500 Servlet Exception java.io.FileNotFoundException: C:\webapps\test (access denied) (on all J2EE Servers i tried so far). http://railo:8080/test/index.cfm works fine. I already tried to add index.cfm to Resins welcome-file-list in app-default.xml to no avail. I want to be able to access deployed apps without this url: http://localhost:8080/app/ Instead i want to use this: http://app:8080/

    Read the article

  • This company buries Ashes on Space for $3000

    - by Gopinath
    Does Space burials sounds crazy to you? Then you may not be a big fan of science fictions or a Japanese. According to a study conducted by NASA many science fiction fans prefer their final rights to be held on space and you can read more details about the research over here on NASA website. The other people who fancy about space burials are Japanese Buddhists. For those who are not aware of Space burials, it’s a procedure in which a small sample of the cremated ashes of the deceased are launched into space using spacecraft. The spacecraft will remain in orbit around the Earth or other planets  for decades and eventually burning up in the atmosphere. Celestis, an US based company, is pioneer in memorial spaceflight business and so far they have conducted a total of 10 space burials. Few of the famous people buried in space are Gene Roddenberry(creator of Star Trek),  Gerard K. O’Neill (space physicist), Clyde Tombaugh (astronomer and discoverer of Pluto)  and complete list is available on this Wikipedia page In the coming months Celestis have planned for a  launch of its latest memorial spacecraft and you can send your loved one’s remains for just $3000. Once they put the ashes on space they will also let you track the location of the spacecraft in orbit using a real time feed. Story via BBC and cc image credit: flickr/gsfc

    Read the article

  • Bluetooth device won't re-add after being removed (Windows 7)

    - by HericDenis
    I've got a SBH52 headset, it works fine on my android phone, then I tried to use it with my Windows 7 PC, then it won't work because Microsoft Windows dosen't have native support for A2DP connections and one of the answers on the previous link said that removing the device from "devices and printers", running this software and then re-add the device would solve the problem. But the big problem is that they won't pair again: I tried, hopelessly, the suggested fixes from Windows, it won't work. By the way, it is Windows 7 (x64), it just looks like Windows 8. I had this problem once many years ago with other PC and Bluetooth device, I remember it had something to do with drivers that were not removed and I tried to delete them from somewhere, and as far as I remember it worked, but no idea how. In short, how can I pair it again with my PC?

    Read the article

  • Google Webmasters Tools strange 404 errors referred from same site

    - by Out of Control
    Starting about a month ago, I noticed a sudden increase in 404 errors in Webmasters Tools for one of my sites (over 1400 errors so far). All the errors are being referred from my own site to non existent pages. The 404 error URLs are all of the same format: URL: http://www.helloneighbour.com/save/1347208508000 The number on the end appears to be a timestamp followed by 3 zeros. The referring page, in this case is : Linked from http://www.helloneighbour.com/save/cmw-insurance-insurance-burnaby When I look at the source code of that page, or I use Webmaster tools to view the page as Google sees it, I can't find any link that comes close to what is above. I built the site, and I can't find any place that might be causing these false links either. The server logs (access and error) don't show Google or anyone else trying to access these links. I've marked all these pages as fixed, and waited a couple of weeks, only to find the errors come back again over the last few days. I'm wondering if anyone else has seen anything strange like this, or if someone might have a way for me to debug, replicate this error myself.

    Read the article

  • Designing a social network with CQRS, graph databases and relational databases in mind

    - by Siraj Mansour
    I have done quite an amount of research on the topic so far, but i couldn't come up with a conclusion to make up my mind. I am designing a social network and during my research i stumbled upon graph databases, i found neo4j pretty interesting for user relations and traversing through nodes. I also thought of using a relational database such as MS-SQL or MySQL to store entity data only and depending on neo4j for connections between entities. Of course this means more work in my application to store and pull data in and out of 2 different sources. My first question : Is using this approach (graph + relational) a good approach for designing my social network keeping in mind that users on social networks don't have to in synch with real data by split second ? What are the positives and negatives of this approach ? My Second question : I've been doing some reading on CQRS and as i understood it is mostly useful for collaborative environments, and environments where users see a lot of "stale" data. social networks has shared comments, events, etc .. and many users query or update the same data. Could CQRS be a helpful approach ? Would it give any performance/scalability benefits or non-useful complexity ? Is it fairly applicable with my possible choice of (graph + relational) databases approach mentioned in the question above ? My purpose is to know if the approaches i have mentioned above seem good enough for the business context.

    Read the article

  • Edirol UA-25 driver on Windows 8 Preview

    - by ETFairfax
    I've installed Windows 8 developer preview on a laptop and everything is working apart from my external sound card. The sound card in question is this one, and I've tried downloading and installing the Window 7 drivers from here but no joy so far. As per the instructions I remove the USB cable from the port. I then run setup.exe and (which I have set to run in Windows 7 compatibility mode). It starts doing it's stuff then says "Please insert the USB cable and wait"......that's where things stop! Nothing happens. I don't even here the "ding-dong" of the USB device being recoginised. Obviously I realise that the drivers are for windows 7 and not 8, but was hoping that someone would be able to crowbar it to work!!! Any tips appreciated. Thanks

    Read the article

  • Performance Optimization &ndash; It Is Faster When You Can Measure It

    - by Alois Kraus
    Performance optimization in bigger systems is hard because the measured numbers can vary greatly depending on the measurement method of your choice. To measure execution timing of specific methods in your application you usually use Time Measurement Method Potential Pitfalls Stopwatch Most accurate method on recent processors. Internally it uses the RDTSC instruction. Since the counter is processor specific you can get greatly different values when your thread is scheduled to another core or the core goes into a power saving mode. But things do change luckily: Intel's Designer's vol3b, section 16.11.1 "16.11.1 Invariant TSC The time stamp counter in newer processors may support an enhancement, referred to as invariant TSC. Processor's support for invariant TSC is indicated by CPUID.80000007H:EDX[8]. The invariant TSC will run at a constant rate in all ACPI P-, C-. and T-states. This is the architectural behavior moving forward. On processors with invariant TSC support, the OS may use the TSC for wall clock timer services (instead of ACPI or HPET timers). TSC reads are much more efficient and do not incur the overhead associated with a ring transition or access to a platform resource." DateTime.Now Good but it has only a resolution of 16ms which can be not enough if you want more accuracy.   Reporting Method Potential Pitfalls Console.WriteLine Ok if not called too often. Debug.Print Are you really measuring performance with Debug Builds? Shame on you. Trace.WriteLine Better but you need to plug in some good output listener like a trace file. But be aware that the first time you call this method it will read your app.config and deserialize your system.diagnostics section which does also take time.   In general it is a good idea to use some tracing library which does measure the timing for you and you only need to decorate some methods with tracing so you can later verify if something has changed for the better or worse. In my previous article I did compare measuring performance with quantum mechanics. This analogy does work surprising well. When you measure a quantum system there is a lower limit how accurately you can measure something. The Heisenberg uncertainty relation does tell us that you cannot measure of a quantum system the impulse and location of a particle at the same time with infinite accuracy. For programmers the two variables are execution time and memory allocations. If you try to measure the timings of all methods in your application you will need to store them somewhere. The fastest storage space besides the CPU cache is the memory. But if your timing values do consume all available memory there is no memory left for the actual application to run. On the other hand if you try to record all memory allocations of your application you will also need to store the data somewhere. This will cost you memory and execution time. These constraints are always there and regardless how good the marketing of tool vendors for performance and memory profilers are: Any measurement will disturb the system in a non predictable way. Commercial tool vendors will tell you they do calculate this overhead and subtract it from the measured values to give you the most accurate values but in reality it is not entirely true. After falling into the trap to trust the profiler timings several times I have got into the habit to Measure with a profiler to get an idea where potential bottlenecks are. Measure again with tracing only the specific methods to check if this method is really worth optimizing. Optimize it Measure again. Be surprised that your optimization has made things worse. Think harder Implement something that really works. Measure again Finished! - Or look for the next bottleneck. Recently I have looked into issues with serialization performance. For serialization DataContractSerializer was used and I was not sure if XML is really the most optimal wire format. After looking around I have found protobuf-net which uses Googles Protocol Buffer format which is a compact binary serialization format. What is good for Google should be good for us. A small sample app to check out performance was a matter of minutes: using ProtoBuf; using System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.Serialization; [DataContract, Serializable] class Data { [DataMember(Order=1)] public int IntValue { get; set; } [DataMember(Order = 2)] public string StringValue { get; set; } [DataMember(Order = 3)] public bool IsActivated { get; set; } [DataMember(Order = 4)] public BindingFlags Flags { get; set; } } class Program { static MemoryStream _Stream = new MemoryStream(); static MemoryStream Stream { get { _Stream.Position = 0; _Stream.SetLength(0); return _Stream; } } static void Main(string[] args) { DataContractSerializer ser = new DataContractSerializer(typeof(Data)); Data data = new Data { IntValue = 100, IsActivated = true, StringValue = "Hi this is a small string value to check if serialization does work as expected" }; var sw = Stopwatch.StartNew(); int Runs = 1000 * 1000; for (int i = 0; i < Runs; i++) { //ser.WriteObject(Stream, data); Serializer.Serialize<Data>(Stream, data); } sw.Stop(); Console.WriteLine("Did take {0:N0}ms for {1:N0} objects", sw.Elapsed.TotalMilliseconds, Runs); Console.ReadLine(); } } The results are indeed promising: Serializer Time in ms N objects protobuf-net   807 1000000 DataContract 4402 1000000 Nearly a factor 5 faster and a much more compact wire format. Lets use it! After switching over to protbuf-net the transfered wire data has dropped by a factor two (good) and the performance has worsened by nearly a factor two. How is that possible? We have measured it? Protobuf-net is much faster! As it turns out protobuf-net is faster but it has a cost: For the first time a type is de/serialized it does use some very smart code-gen which does not come for free. Lets try to measure this one by setting of our performance test app the Runs value not to one million but to 1. Serializer Time in ms N objects protobuf-net 85 1 DataContract 24 1 The code-gen overhead is significant and can take up to 200ms for more complex types. The break even point where the code-gen cost is amortized by its faster serialization performance is (assuming small objects) somewhere between 20.000-40.000 serialized objects. As it turned out my specific scenario involved about 100 types and 1000 serializations in total. That explains why the good old DataContractSerializer is not so easy to take out of business. The final approach I ended up was to reduce the number of types and to serialize primitive types via BinaryWriter directly which turned out to be a pretty good alternative. It sounded good until I measured again and found that my optimizations so far do not help much. After looking more deeper at the profiling data I did found that one of the 1000 calls did take 50% of the time. So how do I find out which call it was? Normal profilers do fail short at this discipline. A (totally undeserved) relatively unknown profiler is SpeedTrace which does unlike normal profilers create traces of your applications by instrumenting your IL code at runtime. This way you can look at the full call stack of the one slow serializer call to find out if this stack was something special. Unfortunately the call stack showed nothing special. But luckily I have my own tracing as well and I could see that the slow serializer call did happen during the serialization of a bool value. When you encounter after much analysis something unreasonable you cannot explain it then the chances are good that your thread was suspended by the garbage collector. If there is a problem with excessive GCs remains to be investigated but so far the serialization performance seems to be mostly ok.  When you do profile a complex system with many interconnected processes you can never be sure that the timings you just did measure are accurate at all. Some process might be hitting the disc slowing things down for all other processes for some seconds as well. There is a big difference between warm and cold startup. If you restart all processes you can basically forget the first run because of the OS disc cache, JIT and GCs make the measured timings very flexible. When you are in need of a random number generator you should measure cold startup times of a sufficiently complex system. After the first run you can try again getting different and much lower numbers. Now try again at least two times to get some feeling how stable the numbers are. Oh and try to do the same thing the next day. It might be that the bottleneck you found yesterday is gone today. Thanks to GC and other random stuff it can become pretty hard to find stuff worth optimizing if no big bottlenecks except bloatloads of code are left anymore. When I have found a spot worth optimizing I do make the code changes and do measure again to check if something has changed. If it has got slower and I am certain that my change should have made it faster I can blame the GC again. The thing is that if you optimize stuff and you allocate less objects the GC times will shift to some other location. If you are unlucky it will make your faster working code slower because you see now GCs at times where none were before. This is where the stuff does get really tricky. A safe escape hatch is to create a repro of the slow code in an isolated application so you can change things fast in a reliable manner. Then the normal profilers do also start working again. As Vance Morrison does point out it is much more complex to profile a system against the wall clock compared to optimize for CPU time. The reason is that for wall clock time analysis you need to understand how your system does work and which threads (if you have not one but perhaps 20) are causing a visible delay to the end user and which threads can wait a long time without affecting the user experience at all. Next time: Commercial profiler shootout.

    Read the article

< Previous Page | 169 170 171 172 173 174 175 176 177 178 179 180  | Next Page >